XenolinkUUCP 1.0

Bart Schraa December 25, 1994

Contents

1 Features 6

2 System Requirements 7

3 Politics 8 3.1 Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2 Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.3 License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.4 No Warranty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.5 Disclaimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

4 Installation 11 4.1 Assigns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

5 Configuration files 12

5.1 Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

5.1.1 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.2 Config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

5.2.1 NodeName . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.2.2 UserName . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.2.3 RealName . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.2.4 Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.2.5 Organization . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.2.6 Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.2.7 RFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.2.8 MailEditor . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.2.9 NewsEditor . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.2.10 DomainName . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.2.11 TimeZone . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.2.12 DefaultNode . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.2.13 MailReadyCmd . . . . . . . . . . . . . . . . . . . . . . . . 15 5.2.14 NewsReadyCmd . . . . . . . . . . . . . . . . . . . . . . . 15 5.2.15 ModemInit . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.2.16 AutoBatch . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.2.17 Timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.2.18 MaxRMailLen . . . . . . . . . . . . . . . . . . . . . . . . 16 5.2.19 BatchBits . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.2.20 DomainPath . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.2.21 SpoolSize . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.2.22 MungeCase . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.2.23 JunkSave . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.2.24 Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.3 Domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5.3.1 Format of a Domain file . . . . . . . . . . . . . . . . . . . 19 5.4 L.Sys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 5.5 Addresses in a small isolated network . . . . . . . . . . . . . . . 23 5.6 Small network with a single connection . . . . . . . . . . . . . . . 24 5.7 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

5.7.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.8 Sys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5.8.1 Warning . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.9 Newsgroups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.10 Passwd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

6 Binaries 31

6.1 AmiUUFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6.1.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6.1.2 Scan Extraction Format . . . . . . . . . . . . . . . . . . . 31 6.1.3 Todo and Stat file formats . . . . . . . . . . . . . . . . . . 31 6.1.4 Currently defined controls . . . . . . . . . . . . . . . . . . 32

6.2 AnyMail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

6.2.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.3 BatchNews . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

6.3.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.3.2 Config variables . . . . . . . . . . . . . . . . . . . . . . . . 36 6.3.3 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

6.4 Compress, ZCat, UnCompress . . . . . . . . . . . . . . . . . . . . 37

6.4.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.5 DCron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

6.5.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6.5.2 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6.5.3 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

6.6 DMail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

6.6.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6.7 DNews . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

6.7.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.7.2 Commands . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.7.3 Commands . . . . . . . . . . . . . . . . . . . . . . . . . . 45 6.7.4 Display cursor controls . . . . . . . . . . . . . . . . . . . . 47 6.7.5 References: support . . . . . . . . . . . . . . . . . . . . . 47 6.7.6 Multi-User support . . . . . . . . . . . . . . . . . . . . . . 47 6.7.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

6.8 Expandm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

6.8.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.9 From . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

6.9.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.10 Getty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

6.10.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 50 6.10.2 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.10.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

6.11 HostName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 6.11.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 55 6.11.2 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

6.12 LockSerial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 6.12.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 56 6.12.2 Warning . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 6.12.3 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

6.13 News . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 6.13.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 58 6.13.2 Receiving News . . . . . . . . . . . . . . . . . . . . . . . . 59 6.13.3 Posting News . . . . . . . . . . . . . . . . . . . . . . . . . 60 6.13.4 Forwarding News . . . . . . . . . . . . . . . . . . . . . . . 60

6.14 NoReq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 6.14.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 62 6.14.2 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

6.15 Null: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.15.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.15.2 Mountlist entry . . . . . . . . . . . . . . . . . . . . . . . . 63

6.16 PostNews . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

6.16.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 64 6.17 RMail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

6.17.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.18 RNews . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

6.18.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 66 6.18.2 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 6.18.3 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

6.19 SendMail (RMail) . . . . . . . . . . . . . . . . . . . . . . . . . . 69 6.19.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 69 6.19.2 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 6.19.3 Config variables . . . . . . . . . . . . . . . . . . . . . . . . 70 6.19.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

6.20 SplitMbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

6.20.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 73 6.21 Tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

6.21.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 74 6.21.2 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

6.22 TrimFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

6.22.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 76 6.23 TrimNews . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

6.23.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 77 6.24 UIdent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

6.24.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 78 6.25 UName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

6.25.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 79 6.25.2 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 6.25.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

6.26 UnShar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

6.26.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 80 6.27 UUArchive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

6.27.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 81 6.28 UUCiCo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

6.28.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 82 6.28.2 Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 6.28.3 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 6.28.4 Configuration options . . . . . . . . . . . . . . . . . . . . 85 6.28.5 Timelog format . . . . . . . . . . . . . . . . . . . . . . . . 86

6.29 XUUCPToss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 6.29.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . 88

7 Running XenolinkUUCP 89 7.1 Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 7.2 Configuration files for XenolinkUUCP . . . . . . . . . . . . . . . 89

7.2.1 Areas.config . . . . . . . . . . . . . . . . . . . . . . . . . . 89 7.2.2 General.config . . . . . . . . . . . . . . . . . . . . . . . . 91

7.3 Gating from News to Echomail and vice versa . . . . . . . . . . . 93 7.4 Gating Mail and News to Netmail and Echomail . . . . . . . . . 93 7.5 Gating Netmail and Echomail to E-Mail and News . . . . . . . . 93 7.6 Signatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

8 Environment variables 94

9 Literature 95

10 Acknowledgements 96

11 Bugreports 97

1 Features

• really fast

• sends mail in a moderated newsgroup to the moderator in stead of posting it to the newsgroup

• can send messages from a echomail area direct to a email address whenever there is a TO: field at the first line of the message

• optional saving of gated emails as PKT in the inbound directory, saves up space for outbound netmails

• optional saving of gated news as PKT in the inbound directory, for use of pass-through areas (one way only)

2 System Requirements

• Commodore Amiga

• AmigaDOS Release 2 or higher

• Xenolink Professional Bulletin Board System 1.90 or higher

3 Politics

3.1 Distribution

In a nutshell, XenolinkUUCP may be distributed freely as long as the following restrictions are met:

• The distributor agrees to cease distributing the programs and data involved if requested to do so by the author.

• The distributor may only distribute an unmodified copy of the original program, with all the supplied documentation and copyright notices intact.

For more details, see the chapter called ”License”.

3.2 Support

The latest version of XenolinkUUCP (with all its associated tools) is always available for filerequest from FidoNet node 2:285/312, ”Echo BBS Dordrecht” under the magic filename ”XenolinkUUCP”.

If you have any suggestions, bug reports etc., feel free to contact the author of XenolinkUUCP at the address below.

Bart Schraa Eisingahof 44 3318 AM Dordrecht The Netherlands 2:285/312.0@fidonet (no routed mail) bart@xecho.xs4all.nl

3.3 License

• This license applies to the product called ”XenolinkUUCP”, a program for the Amiga computer, published by Bart Schraa under the concepts of Free-Ware, and the accompanying documentation, example files and anything else that comes with the original distribution. The terms ”Program” and ”XenolinkUUCP” below, refer to this product. The licensee is addressed as ”you”.

• You may copy and distribute verbatim copies of the programs executable code and documentation as you receive it, in any medium, provided that you conspicuously and appropriately publish only the original, unmodified programs, with all copyright notices and disclaimers of warranty intact and including all the accompanying documentation, example files and anything else that came with the original.

• You may not copy and/or distribute these programs without the accompanying documentation and other additional files that came with the original. You may not copy and/or distribute modified versions of these programs.

• You may not copy, modify, sublicense, distribute or transfer the programs except as expressly provided under this license. Any attempt otherwise to copy, modify, sublicense, distribute or transfer the programs is void, and will automatically terminate your rights to use the programs under this license. However, parties who have received copies, or rights to use copies, from you under this license will not have their licenses terminated so long as such parties remain in full compliance.

• By copying, distributing and/or using the programs you indicate your acceptance of this license to do so, and all its terms and conditions.

• Each time you redistribute the programs, the recipient automatically receives a license from the original licensor to copy, distribute and/or use the programs subject to these terms and conditions. You may not impose any further restrictions on the recipients’ exercise of the rights granted herein.

• You may not disassemble, decompile, re-source or otherwise reverse engineer the programs.

• You agree to cease distributing the programs and data involved if requested to do so by the authors.

• You may charge a fee to recover distribution costs. The fee for diskette distribution may not be more than the cost to obtain a public domain diskette from Fred Fish.

3.4 No Warranty

There is no warranty for the programs, to the extent permitted by applicable law. except when otherwise stated in writing the copyright holders and/or other parties provide the programs ”as is” without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. the entire risk as to the quality and performance of the programs is with you. should the programs prove defective, you assume the cost of all necessary servicing, repair or correction. in no event unless required by applicable law or agreed to in writing will any copyright holder, or any other party who may redistribute the programs as permitted above, be liable to you for damages, including any general, special, incidental or consequential damages arising out of the use or inability to use the programs (including but not limited to loss of data or data being rendered inaccurate or losses sustained by you or third parties or a failure of the programs to operate with any other programs), even if such holder or other party has been advised of the possibility of such damages.

3.5 Disclaimer

No warranty, either express or implied, is made with respect to the fitness of XenolinkUUCP.

Bart Schraa (referred to as ”the author”), reserves the right to not develop any future versions of XenolinkUUCP.

The author will try to make a good faith attempt at correcting any problems if any are discovered, but is in no way required, nor bound to correct them.

The author neither assumes nor accepts any responsibility for the use or misuse of these programs. He also will not be held liable for damages due to loss of profit or any other damages arising out of the use, or inability to use these programs.

Bart Schraa will not be liable for any damage arising from the failure of these programs to perform as described, or any destruction of other programs or data residing on a system attempting to run the programs. While I know of no damaging errors, the user of these programs uses it at his or her own risk.

4 Installation

XenolinkUUCP is an easy to install package, just run the supplied installer script. If you already have an UUCP setup just skip the part that generates the needed configuration files.

4.1 Assigns

Startup-Sequence Assignments (examples). Note, UUPUB: will in the future be used for ’public’ uucp transfers. There are two ways to create the desired UUCP setup; I prefer the first method.

• Assign UUCP: DF0:

Assign UUSPOOL: UUCP:Spool Assign UULIB: UUCP:Lib Assign UUMAIL: UUCP:Mail Assign UUNEWS: UUCP:Mail/News Assign UUPUB: UUCP:Pub Assign Getty: UUCP:Lib Assign BMS: UUCP:Lib/BMS Config is the file UULIB:Config

• Assign Getty: ”wherever” Assign BMS: ”wherever” Config is the file S:UUConfig and contains entries that define where the various other directories are, including the lib directory: The following Config entries accomplish this: UUSpool directory UUNews directory UUMail ” UULib etc... UUPub ” UUMan ” UUCP ”

5 Configuration files

All UUCP configuration files must be in the UULIB: assign, apart from the special XenolinkUUCP configuration files, which must reside inside the ’XenolinkUUCP’ directory in your configuration directory.

5.1 Aliases

Uulib:Aliases is a text file containing mail aliases. There is no need to run newaliases after modifying this file (there is no newaliases program). This file is scanned by sendmail for each item of incoming and outgoing email. Each line in uulib:aliases may be either blank, have a # as the first character to indicate a comment, or begin an alias. An alias consists of a name, colon, and list of items. For example:

comiclovers: charlie, ben, lucy, james

Multi-line aliases may be specified by a comma at the end of each line to be continued:

comiclovers: charlie, ben, lucy, james

Note that the last line has no comma. Each item in an alias may be:

• user a local user name

• \user forces a local user name if the name is aliased

• alias another alias

• path some path

• >file append the mail item to some file

• <file load a further list of destinations from a file (one item per line)

• |command pipe mail item to a command with optional args

• ”|command args”

For example, if I want incoming mail to be posted to my mail box and automatically appended to some archive file (and note here that I must use \ to prevent an alias loop):

dillon: \dillon, >uumail:archive items may point to other aliases (dillon is already an alias): comiclovers: dillon, fred mail may be piped to a command, such as an automated vacation-response program: dillon: \dillon, >uumail:archive, |vacation Alias are expanded by default. you can disable alias expansion by using a double colon, like this: huge-mailing-list:: fubar@red, d, asdflk Using the double colon will cause the To: field to only contain the name of the alias, ’huge-mailing-list’. This is extremely useful for mailing lists. 5.1.1 Comments A comment is denoted by a ’#’. Also, any text that occurs after the first space in a comma delimited field will be ignored. A line that begins with a ’#’ is ignored (as if it did not exist). For example: test: t1, t2 (This is T2), t3, # fubar # t4, t5, The above alias expands to: t1, t2, t3, t5

5.2 Config

This file holds important stuff for running XenolinkUUCP, please read this part carefully before setting up XenolinkUUCP.

5.2.1 NodeName The name by which you want to call your machine. Suggested 7 chars max.

5.2.2 UserName Your ’user’ name. e.g. bart. This is where Mail, DMail, and From use as a default for your user name.

5.2.3 RealName Your full name. e.g. Bart Schraa. Used by sendmail (which is run from Mail or DMail)

5.2.4 Debug Used by us source hackers

5.2.5 Organization Your organization, if any (included in messages and article headers).

5.2.6 Filter Foreground filter program (to display a file). Output expected to go through stdout. Used by MAN if RFilter does not exist.

5.2.7 RFilter Background filter program (that can be RUN’d to display a file)

5.2.8 MailEditor The editor DMail uses.

5.2.9 NewsEditor The editor DNews uses.

5.2.10 DomainName

The domain of your machine, usually .UUCP. This is automatically tacked on to the mail headers when you mail out or mail is routed through your machine.

5.2.11 TimeZone

PST, PDT, etc... Many, but certainly not all, timezones are implemented. This is used to calculate GMT time from local time for use in mail headers. If sendmail doesn’t recognize your timezone, then use:

+0200

or similar to denote the offset from GMT.

5.2.12 DefaultNode

Normally set to an immediately adjacent usenet node. If you can connect to more than one other usenet node refer to uuman:domains for information on selecting which node an address gets routed through.

Example: ’sorinc.net’ if I talk directly to sorinc. You may also specify explicit paths as long as the very first machine is directly adjacent to you (you can call directly).

5.2.13 MailReadyCmd

Command to run to bring up ’you have new mail’ requester ... see the example Config file.

5.2.14 NewsReadyCmd

Command to run to bring up ’you have new news’ requester when any new news is delivered.

5.2.15 ModemInit

Same format as the ’send’ portion of a send-expect string. May be used to initialize the modem before dialing. Used by UUCICO.

5.2.16 AutoBatch

This config entry need only exist. The config entry should be set to ’autobatch’. That is:

AutoBatch autobatch

If this config entry exists, posted news is immediately batched for transfer. This entry is useful if you do not propogate news because you do not have to worry about running BatchNews manually.

5.2.17 Timeout

Specify timeout on Connect .. default is 60 seconds. This config entry need not exist. Used by UUCico.

5.2.18 MaxRMailLen

Specify maximum size a ’C rmail’ line can be in an X. file. If not specified or specified as 0, only a single mail address is allows on the rmail line. If ¿ 0, then multiple mail addresses (you are sending a piece of mail to multiple recipients) are generated until the buffer limit is reached, then restarted with a new queue file.

5.2.19 BatchBits

Specify number of bits used for news batching compression, 12-16 is supported. Default is 12. If your feed can handle it you may want to set this to 14.

5.2.20 DomainPath

Specify ’N’ or ’Y’, default is ’N’. If enabled, fully domained paths will be header in sendmail’s Received: headers and in Batchnews’s Path: field. Normally this should be set to ’Y’.

5.2.21 SpoolSize

Specify maximum file size for batchnews, default is 60000.

5.2.22 MungeCase

Specify N to disable case munging for incoming files. Default is to ENABLE case munging.

5.2.23 JunkSave

Specify N to disable storing articles to the junk newsgroup. Specify Y or leave out the config option to enable. Normally articles that have no corresponding newsgroup in UULIB:NewsGroups are placed in junk to allow them to be forwarded to other sites.

5.2.24 Other

All of these below allow you to specify explicitly where the given executable lies via a full path. Any config entry below that exists will use that path, else will assume the executables lies somewhere in your command path.

Uux Sendmail Postnews Uuxqt RMail CUnbatch RNews RSMTP RCSMTP

These programs are those which are run automatically by other programs and thus you might wish to place them in a directory not included in your normal command path so you don’t run them accidently.

5.3 Domain

The UULIB:Domain file holds routing information for addresses you send Usenet mail to. This file is normally required ONLY if your machine can talk to more than one usenet host. For machines that can talk to only one usenet host, you need only set the ’DefaultNode’ entry in UULIB:Config to the name of the one host.

Below there is an explanation of how to use bang paths (direct addressing). Normally you can use the domain path which makes addressing much easier, ie you only have to know the address of the recipient and not the sites which the mail has to go through. Therefore in most cases you won’t need this file, the entry ’DefaultNode’ in the config will be enough.

• In order to have a correct path in your messages you should set the entry DomainPath to ’Y’ in Config.

A domain is something like ’cts.com’ or ’berkeley.edu’. Lets say you have direct Usenet connections to ucbvax.berkeley.edu and fubar.cts.com.

Now, you want to send an email message to charlie.berkeley.edu and another email message to galaxy.cts.com ... obviously you will want the first message to be routed through ucbvax and the second routed through fubar. The appropriate domain entries would be:

∗.berkeley.edu MF UU ucbvax.uucp ∗.cts.com MF UU fubar.uucp

You will also want a default of some sort ... say you send mail to photon.csnet, you want unknown domains to be routed to somewhere that knows how to deal with them. So you would also have another entry in UULIB:Domain:

∗ MF UU ucbvax.UUCP

That specifies the machine to route mail through to reach an unknown address.

• UUCP sites that you directly connect to need not be listed in UULIB:Domain, the UULIB:L.Sys file is automatically scanned for such sites. For said machines any additional domain information is ignored (such as .UUCP). In case the name of an immediately adjacent UUCP site conflicts with another site you can enter that other site into the domain list explicitly using the MD Type described below.

5.3.1 Format of a Domain file

Each line in the domain file may be blank, contain a ’#’ and then a comment, or contain a domain record. Each domain record is broken up into four fields:

Domain Type Class Address-Info

• Domain domain in question, you may use ’*’ instead of a domain name to match one or more subdomains or the machine name. Case is ignored.

For example:

*.COM .Berkeley.EDU

• Type MF or MD. MF stands for mail forwarder, MD stands for mail destination. The difference can be shown with an example:

– ucbvax.berkeley.edu MD UU ucbvax.UUCP

– *.berkeley.edu MF UU ucbvax.UUCP

In the first case the domain is actually a complete machine name which we can directly talk to, thus MD is used telling the mail system that we REPLACE the address with this address.

In the second case the machine is what we must go THROUGH to reach machines with the given domain (note that more explicitly specified domains always have priority of less explicitly specified domains). The mail system will PREPEND the address field with the forwarding machine address.

• Class UU Currently only UU, meaning USENET class, is supported. This field is reserved to allow specification of different types of low level mailers so the mail system is not necessarily limited to using the USENET as the transport layer.

• AddrInfo For the UU class AddrInfo contains a ! separated UUCP path where the first machine MUST be an immediately adjacent node. The remainder of the path is tagged onto the rmail line along with the original path specification.

– For any machine in the bang (!) path of the AddrInfo field which is directly connected to the previous machine (the first machine is always directly connected to your machine), the domain is optional. That is, the machine may be listed with or without a domain separated by dots. The examples below show parts of paths both with and without domain names.

When you route through the INTERNET, however, you must be more careful. Only known USENET paths may be addressed without worrying about the domain part of the machine name.

5.4 L.Sys

The L.Sys file is used by UUCico and sendmail (that is, Mail and DMail) to get information about one or more UUCP nodes that you can call.

An example L.Sys entry:

# This is a comment. A500 Any SER: 9600 5551344 ogin: uover sword: qwee\r cae780 Any SER: 2400 5555667 ogin: Udillon sword: xarbge\r spooge Any SER: 2400 5551234 ogin: uucp sword: gugg\r sorinc Any SER: 2400 ATM1&E0DT5551111 ogin: uover sword: bleg\r #this is commented out. #postgres Any SER: 9600 5556783 ogin: dillon sword: foobarb\r

The first field is the name of the machine in question. CASE IS IMPORTANT. Most machines use all lower-case names. The second field (Any in the examples above) may have no spaces:

• Any the system can be called at any time

• Never the system can never be called

• hh:mm-hh:mm any day in the hour range indicated (24hr time)

• MoTuWeThFrSaSuhh:mm-hh:mm On the days indicated in the hour range indicated

• <timespec>,<timespec> MoTuWeThFr02:00-03:00,SaSu00:00-23:59 On the days indicated in the hour range indicated, time specs separated by commas.

The third field is currently not used by AmigaUUCP but should remain SER: for future compatibility. The SER: device is not actually used by UUCICO.

The fourth field is the call-out baud rate. Call-in baud rates (that is, receiving a call) are determined by Getty and/or the modem if it is a smart modem.

The fifth field is the phone number to call to reach the machine in question. Two forms are allowed for the phone number:

Form1: 5551234

Form2: AT¡commands¿D[T/P]5551234

If just the number is given uucico will automatically prepend ATDT. If the phone number starts with AT then UUCICO will send the string verbatim. Normally the second form is used to turn on special modes of a smart modem for specific sites. WARNING, to properly turn off any modes you turn on in this manner it is suggested you add appropriate AT commands to the GETTY command line when you start up your GETTY (that GETTY runs whenever it resets the modem). Also, note that if UU-CICO calls up several systems in one gulp the special modem options you might specify in Form2 will not be turned off unless you use Form 2 for all dial strings, like this:

cae780 Any SER: 2400 AT&E1DT5555667 ogin: Udillon sword: xarbge\r spooge Any SER: 2400 AT&E0DT5551234 ogin: uucp sword: gugg\r

Remaining fields are expect-send strings. Once uucico dials out and reaches the machine in question, it must login into that machine using the proper login and password. To do this you specify a series of strings alternating between a string to expect from the remote machine, and a string to send when the preceding string is found. The fields are always in the order expect send expect send expect send expect ...until the end of the line. The expect field may be ”” (two quote characters) to indicate we expect nothing and should immediately move to the next (send) field.

The example below may be read as follows. Wait for ’ogin:’ to be sent. When it is, send the user name ’uugenly’. When the remote machine asks for a password by sending ’sword:’, send the password ’garbage9’.

ogin: uugenly sword: garbage9

If an expect string is not found in fifteen seconds, the connection fails and uucico will hang up. It is possible to specify an alternate send expect sequence to use in the event of a timeout. Simply follow the expect string by pairs of send expect strings all seperated by ’-’s. No spaces are permitted in this extended expect string. Each time a timeout occurs, the next string in this sequence will be sent, and then the string following that will be expected. Successive pairs of strings will be sent and expected until either the total expect string has been used up, in which case uucico will hang up, or if an expected string is received from the remote machine, then the extended expect string will be skipped, and the following send field will be sent. This feature is very useful if the remote site answers using the wrong baud rate and you must send a break to force it to use another.

The example below may be read as follows: Wait for the login message by looking for ’ogin:’. If it doesn’t come, then send a break (\c\b), and wait for ’ogin:’ again. If it doesn’t come, send a break again and wait for ’ogin:’. If ’ogin:’ does not arrive this time, hang up. If ’ogin:’ were to arrive at any of these expected times, then the extended expect string would be skipped and the next send string would send the user name ’uugenly’. The rest is as before.

ogin:-\c\b-ogin:-\c\b-ogin: uugenly sword: garbage9

Special character sequences within a send field are recognized:

– \ b send break.

– \r write a carriage return

– \n write a line feed

– \ a backslash

– \t a tab character

– \d a 2 second delay occurs before further processing takes place

– \s a space

– \c Normally the send field is automatically terminated with a CR. This DISABLES that.

As you will note by the above example, we usually do not have the first character of an expected string. This is because the expect-send fields are case sensitive and some machines say ’login:’ while others say ’Login:’... so we wait for ’ogin:’.

Refer to Passwd on how to set up a login name and password for incoming calls.

5.5 Addresses in a small isolated network

Using the UULIB:Domain file in local networks drastically simplifies most other parts of the UUCP mail system. The greatest advantage of using a Domain file is that you can refer to machines in your local net by name rather than by path and can refer to them by name in any groups you might have constructed in UULIB:Aliases. you can also use the Domain file to re-route email to machines that may have moved to somewhere else in your local network (say a buddy moves back east) without bouncing the email.

Lets say you have a group of people all running UUCP connected like this: d / f / / a—b—c—h / \ \ / \ g x e

If your machine is b.UUCP and you want to email to user@h.UUCP, then the appropriate path is: To: c!h!user If your machine is d.UUCP and you want to email to g.UUCP, then the appropriate path is: To: b!c!g!user There is another alternative. You can setup your UULIB:Domain file with all of these paths and just say: To: user@g.UUCP The Domain file would be different for each node but you have removed the complexity one step. The Domain file for a.UUCP would look like this:

* MF UU b.UUCP This assumes that b.UUCP also implements Domains. The Domain file for b.UUCP would look like this:

* MF UU c.UUCP x.UUCP MF UU a.UUCP

Because, apart from x.UUCP, the only nodes b.UUCP cannot reach directly are reachable via c.UUCP.

The Domain file for c.UUCP would be:

* MF UU b.UUCP Because the only nodes c.UUCP cannot reach go through b.UUCP, so we set the default route for unknown nodes to go through b.UUCP. Here we assume that b.UUCP uses UULIB:Domains as well and knows how to get to x.UUCP which is not immediately adjacent to it.

The Domain file for c.UUCP assuming the b.UUCP does NOT use a Domains file (which is safest actually) is:

* MF UU b.UUCP x.UUCP MF UU b.UUCP!a.UUCP

Alternately you can use MD (mail destination):

* MF UU b.UUCP x.UUCP MD UU b.UUCP!a.UUCP!x.UUCP

5.6 Small network with a single connection

d / f / / a—b—c—h—ucbvax.berkeley.edu / \ \ / \ g x e

This is another possible configuration... one person in your little Amiga network has a connection to the outside world. In this case everyone in your network should have UULIB:Domain entries to properly route email back and forth. Specifically, if you are giving somebody your email address and your machine is x.UUCP, you want to be able to give them: ucbvax.berkeley.edu!h!x!user As your address rather than ucbvax.berkeley.edu!h!c!b!a!x!user In otherwords, you want to HIDE your local network from the outside world. This would require h.UUCP to have the following UULIB:Domain file:

* MF UU ucbvax.berkeley.edu a.UUCP MF UU c!b b.UUCP MF UU c d.UUCP MF UU c!b e.UUCP MF UU c!b f.UUCP MF UU c g.UUCP MF UU c x.UUCP MF UU c!b!a

Each of the other nodes in the network would have a similar Domain file. Note that when you have a connection to the outside world the default, ’*’, should point to the outside world. The ’*’ entry for a.UUCP, for example, would be:

* MF UU b!c!h!ucbvax If everyone in your local net implemented ’*’ properly it would suffice to redirect ’*’ to, say, just b.UUCP, and b.UUCP would direct it to c.UUCP, etc... The cleanest way to deal with it is actually to redirect it to the last node in your local net that talks to the outside world:

* MF UU b!c!h This allows the sysop at h.UUCP the latitude to do further routing. For example, what if h.UUCP was able to connect to two machines on the outside world! ucbvax.berkeley.edu / —-h \ pacbell.pacbell.com

In this case you want to give h.UUCP the latitude to redirect email to the .pacbell.com domain to pacbell.pacbell.com instead of going the long path through ucbvax.berkeley.edu ...

* MF UU ucbvax *.PacBell.COM MF UU pacbell

Thus, all the other nodes in your local network should direct unknown addresses through h.UUCP rather than bypass h.UUCP’s domain system by giving an explicit route through it.

5.7 Security

5.7.1 Explanation

The UULIB:Security file governs readability and writability of directories relative to remote uucp requests. The UUSPOOL: directory is always readable and writable.

This prevents other nodes from examining or overwriting arbitrary files in your system.

The UUCICO program, which does the actual work downloading and uploading files, will check remote-requested paths against this file by comparing inodes (DOS Locks) and not by name. The reason for this is simply that, on the Amiga, several different paths may refer to the same directory.

Note that before 1.16 you had to specify all directories for which access was to be allowed, even sub directories of directories already specified. As of 1.16 you need only specify the ’parent’ directory and all sub directories will be allowed by default. So, for example, if you allow UUPUB: then people would be able to access UUPUB:fubar, UUPUB:mydir/abcd, etc... where previously they would have not had access to UUPUB:mydir/...

Example:

# This file is used by UUCICO to determine the validity of requests. # # The directories listed here are *allowed* directories for uucp # transfers. The permissions field lists permissions # r -readable # w -writable tmp: rw uucp:c r uucp:man r UUPUB: rw # If you have a UUPUBW: assign that is *different* from UUPUB: then # you might want to make UUPUB: readable only and UUPUBW: read-write.

5.8 Sys

The UULIB:Sys file lists all systems that send you news and all systems that you feed news to. Any news received from any one system in this list is sent to all other systems on the list (never back to the system that originally sent the news). Any news that you post from your machine will be sent to ALL systems on the list.

• upstream sites which feed you (i.e. your news feed) (news you post feeds back)

• downstream sites which you feed (news they post feeds back)

5.8.1 Warning

There can be no loops in the ’network’ you create by listing several other UP-STREAM machines along with your main feed. Generally in a local UUCP network made up of Amigas, only ONE site will receive news from the ’backbone’ USENET and propogate it to the other machines. If two machines propogated duplicate news from the same backbone site, duplicate articles would appear. If two machines propogated duplicate news from DIFFERENT backbone sites then your little amiga network will be looping news throughout the entire USENET which will make a LOT OF PEOPLE ANGRY!

The Sys file consists of entries like this (example) (NO WHITE SPACE AL-LOWED):

uunet:* friend1:* friend2:*

Some news sites will have several names, to prevent news from being circulated to the uucp name of a site when it is passed under a different name, you can specify aliases as follows (NO WHITE SPACE ALLOWED):

uucpname:alias:alias:alias: ... In most cases you will have only one news site, your main backbone, and you do not have to worry about it too much. The formal format is: site:<wildcard>,<wildcard>,<wildcard>,

<wildcard>,<wildcard>,... or (example w/ aliases) site:alternatename:<wildcard>,<wildcard>,<wildcard>,

<wildcard>,<wildcard> ... A wildcard uses ∗ and ?, and may be preceeded by a − to indicate groups that should NOT be passed along. For example, the following is valid:

uunet:*,-comp.*,comp.*amiga*

Which can be interpreted as ’include all groups except the comp groups, but let the amiga comp groups through’. Not that anybody would use such a declaration, it is simply to demonstrate the power of wildcards.

The ! character can be used as a synonym for the − character.

Multiple lines can be used using ’\’ continuation (the last line should not have a ’\’). The <wildcard> is a wildcarde newsgroup name, such as comp.* or comp.sys.* or a specific newsgroup or whatever, specifying which newsgroups should be propogated to that particular site.

Whenever news is received by RNEWS, either through a local posting or remotely received news, the Sys file is scanned and an entry appended to the file UUSpool:Batch/<system> for each system the news is to be propagated to. RNEWS will never propogate news to a machine that is already in the Path: field and so the news is never echo’d.

Note that the news is NOT spooled yet. To spool all pending news you must run the BatchNews program. Thus, to propagate news to other sites (including your own news to your main feed), you must run Batchnews before Uucico. you can have Uucico automatically run Batchnews by specifying the -b option to Uucico.

5.9 Newsgroups

The setup on your end consists of editing the UULIB:NewsGroups file to list all the groups you want to extract out of the stream. Henceforth, any news sent to you by the other system will automatically be unbatched and available to DNews. Here is an example of this file:

comp.sys.amiga 7 comp.sys.amiga.tech 7 news.admin 7 rec.games.frp 7 news.misc 7 junk 1

Each line consists of two fields. The first is the name of the newsgroup. The second field specifies the number of days a particular message should be kept on your system before it expires.

The TrimNews program scans all newsfiles looking for files older than the specified number of days and deletes them. TrimNews should be run from your cron once per day. If you do not run TrimNews, news files will build up over the weeks until you run out of disk space.

Note that there is a ’junk’ group specification in UULIB:NewsGroups. This is a dummy group to which all messages to unlisted groups are placed. Generally you will want to expire this group on a per day basis rather than a weekly (or whatever you choose) basis. However, if you are forwarding news to other sites you will want the timeout to be the same as for other groups.

If you are receiving news this is pretty much a neccessity to prevent news files from building up and filling the disk.

Not running trimnews means that articles will continue to pile up until the disk is full!

5.10 Passwd

Passwd is similar to the UNIX /etc/passwd file and is currently used by Getty to verify remote logins and run the appropriate ’shell’, which in most cases will be uucico. The format is:

# Put any comment here # # User,Password,Uid,GroupId,Finger-Info,Home-Dir,Command bbs,*,10,0,BBS,ram:,mybbs:c/mybbs foo,bar,23,2,The Guy,ram:,uucp:c/uucico gaa,xxx,24,2,The Guy,ram:,uucp:c/uucico

• Unlike manually run UUCicos, you do not specify a -UNIT or -DEVICE option for uucico’s run from a getty. Getty automatically supplies these arguments to the program it runs.

The above example runs uucico when somebody logs in as ’foo’ with the proper password (bar). Normally the user runs a Getty from s:startup-sequence for each serial port he wishes to allow logins on.

The Passwd file combined with appropriate entries and a running Getty allow arbitrary UUCP connections to be made into your Amiga.

Sendmail will add your finger info to the From: field of any mail message. Fields:

• User user name, up to 8 characters

• Password password, up to 8 characters (uncrypted for now); * = no password

• Uid Unique numerical id (don’t use 0 please), this WILL be used by some programs to find password entries. Give each entry a different UID.

• Gid not currently used, set to 2 (don’t use 0).

• Finger Finger information (your name). Future sub fields within the finger information will be separated by colons (:).

• Home-Dir Directory from which to run the command

• Command Command to run. This command cannot be a bcpl program. Command is run with arguments you specify plus:

– −DEVICE devicename −UNIT unitname Where the devicename and unitname together make up a serial port which the command should use for further communications. stdin and stdout are set to NULL:, as is the console handler. (Getty accomplishes all of this) If there is a ’*’ infront of the command name, then Getty will setup stdin and stdout using the FIFO: device and fifo.library, allowing programs to use stdio to talk to the serial device.

6 Binaries

6.1 AmiUUFilter

Usage: AmiUUFilter [dummy group]

6.1.1 Explanation

AmiUUFilter filters out specially formatted messages and appends them to a TODO and STAT file in the UUCP: directory. If run without arguments, Ami-UUFilter scans stdin, thus useful as part of a mail alias like this: dillon: \dillon, >uumail:mbox, |amiuufilter Which extracts ##B and ##E bug reports from my personal mail. AmiU-UFilter may also be used to automatically extract specially formatted reports from NETNEWS. This is done by making a dummy UULib:Sys file entry: uuscan:alt.sys.amiga.* Which causes RNEWS to add entries to the UUSpool:Batch/UUSCAN file for the selected newsgroups. Since this node does not exist in your L.sys file, it will never be processed into queue files. Instead, you want to run ’AmiUUFilter uuscan’ every once in a while, usually via DCRON as in this example: 8 3 * * * uucp:c/amiuufilter uuscan

Doing so will cause AmiUUFilter to scan UUSpool:Batch/UUSCAN and then scan all the specified articles, deleting the uuscan file when it is through.

6.1.2 Scan Extraction Format

AmiUUFilter searches for ##<c> lines and extracts any data between them, the final message should be terminated with ## alone. The ##’s must be flush with the left margin. Here is an example (##’s not flush w/ the left margin on purpose):

##B dillon.bug23 Hello, I have found a bug in uucico ... ##B dillon.bug24 I have found another bug in sendmail ... ##

6.1.3 Todo and Stat file formats

The TODO file format to which extracted information is appended is in the following format: ##<c> <bug-id>

Other control information may be added in the future. As you can see, AmiU-UFilter will automatically scan the From: field and will also append the current date to the entry, making it easy to determine when something came in. The whatever you like – I use it as a comment to what I intend to do with the bug report in question.

6.1.4 Currently defined controls

##B <unique-id> specifies a BUG REPORT ##E <unique-id> specifies an ENHANCEMENT request ##S uucp:src/.../file specifies a SOURCE CODE UPDATE

6.2 AnyMail

Usage: AnyMail -c[] -e[] -i[] -x[]

6.2.1 Explanation

Anymail was created as a replacement for the Amiga UUCP mail notifier, Inform. Anymail will notify you by bringing the workbench screen upfront and opening a window with the author and subject of all your waiting mail. You can easily click on the window to view your mail in your favorite mail reader or close the window, to read it later.

AnyMail will scan UUMAIL: looking for mail files. Each file will be scanned for From and Subject lines to display in the AnyMail window. You may exclude files from the scan using the -e switch. Any file matching the amiga pattern following the -e switch will not be scanned. Normally you would exclude mbox from the scan. You may also force files to be included in the scan that were excluded by the -e switch. Any file matching the template following the -i switch will be scanned.

• if your mail directory contains a large number of files you may opt to do something like: -i <user> -e #?

AnyMail is not intended to be started by the user. Instead it is to be started by the mailers rmail and sendmail. The mailers look for a line in uulib:config labeled ’MailReadyCmd’. This line will be executed when new mail is available. You can set this line to start AnyMail.

The mailers try to prevent executing the notifier multiple times by using a flag file. The mailers create the flag file, and the notifier deletes it. The notifier is passed the name of the flag file following -x.

Starting AnyMail while another copy is already running will cause the first AnyMail to scan UUMAIL: again, and the second AnyMail to terminate. Any-Mail deletes the flag file as soon as it starts up to allow multiple invocations of AnyMail.

AnyMail is compiled with cres.o so you should be able to make it resident if you wish.

AnyMail accepts the following switches:

• -c Command This command will be executed if the main body of the AnyMail window is selected. The command is usually used to start up a cli running dmail. For example: -c ”newcli from uucp:s/start-dmail”

• -e Pattern This switch is used to exclude a set of files from the set to be scanned.

The pattern is a normal amiga pattern. ? matchs any character. #C matches zero or more Cs.

• -i Pattern This switch is used to override the -e switch. It will force any file name matching the pattern to be included in the set of files to be scanned, regardless of any -e switches. For example, the following line will exclude files such as to-thanos, and to-chris, but it will include the file tony, even though it matches the -e template. AnyMail -e to#? -i tony

• -x FileName -x defines the name of the flag file.

Here’s an example using the MailReadyCmd line of uulib:config.

MailReadyCmd AnyMail -e mbox -e to-#? -c ”newcli from startdmail”

This will notify you of any new mail you have in UUMAIL:, but it won’t bother you with mail you’ve archived in mbox, or files like to-neda, or to-dmk. It has the added attraction that you’ll be notified of mail directed to postmaster, root, or even to a missspelled version of your user name. If you pick the main body of the window, dmail will be started in a new window to make it easy for you to read your new mail.

6.3 BatchNews

Usage: BatchNews [-h hostname] [-t temporary-directory]

6.3.1 Explanation

The BatchNews program scans the UUSpool:batch directory for text files containing lists of news articles (prepared by rnews) which are to be forwarded to other sites. The names of these files will be the names of the respective systems to which news is to be forwarded.

BatchNews compresses each batch of news and then calls ’uux’ to spool the batch for delivery to the target system. When batching is completed for a particular system, that UUSpool:batch/¡sysname¿ file is deleted.

BatchNews is intentionally decoupled from the ’uuxqt’ program (it isn’t run by uuxqt) so that you can schedule the times at which news batching is performed (using crontab entries), providing you some degree of control over when outgoing news activity takes place without restricting login times, etc.

By default, BatchNews will batch news for all systems which have files in UUSpool:Batch. Using the -h argument, the caller may force only a single host to be batched for.

By default, BatchNews creates its temporary files (which consist of copies of the news articles to be sent to a destination system) in the UUNews directory, and its compressed temporary. Using the -t argument and routing these temporaries to RAM: or a subdirectory thereof can significantly speed up the batching process.

News batching is driven by a file named UULib:sys. Entries in the file have the form:

# Forward the following groups to system jojo - jojo:comp.*, \ gnu.*, \ misc.jobs.offered

# Forward everything except misc.jobs.offered to fubar # fubar:*,-misc.jobs.offered

(see UUMan:Sys for more information on the Sys file)

Lines beginning with a number sign (#) are comments and are ignored. Each entry in the file is essentially treated as one very long line which can be continued over many physical lines through the use of the backslash continutation character (\). The format of the ’sys’ file is somewhat different from what is implemented on Unix systems. Each ”entry” is a simple pattern which may contain wildcards (*, ?). The ’rnews’ program compares the newsgroup name against each of these patterns until either a match is detected or the end of the list is reached.

6.3.2 Config variables

• BatchBits 12/13/14/15/16 Set number of bits for compression, 12 to 16. You can set it higher if you have lots of memory. This also depends on what the sites you feed can handle. Generally anything greater than 14 bit compression is overkill.

• DomainPath N/Y If ’Y’ then your full domain name will be put into the Path: instead of just your uucp node name.

• SpoolSize 65000 Set maximum file size for batched spool files, before compression.

6.3.3 Notes

To speed BatchNews up:

• Move temporaries to RAM: (use -t)

• Make UUX resident

• Run BatchNews more often

6.4 Compress, ZCat, UnCompress

Usage: compress [ -f ] [ -v ] [ -c ] [ -V ] [ -b ¡bits¿ ] [ name ... ] uncompress [ -f ] [ -v ] [ -c ] [ -V ] [ name ... ] zcat [ -V ] [ name ... ]

• These three executables are exactly the same, simply named differently causing different default action.

6.4.1 Explanation

Compress reduces the size of the named files using adaptive Lempel-Ziv coding. Whenever possible, each file is replaced by one with the extension .Z , while keeping the same ownership modes, access and modification times. If no files are specified, the standard input is compressed to the standard output. Compressed files can be restored to their original form using uncompress or zcat.

As of 1.16, AmigaUUCP’s compress will decompress up to 16 bit compression formats. Default compression is 14 bits but may be set to 16 bits with the ’-b 16’ option. The minimum supported compression bits is 12.

The -f option will force compression of name. This is useful for compressing an entire directory, even if some of the files do not actually shrink. If -f is not given and compress is run in the foreground, the user is prompted as to whether an existing file should be overwritten.

The -c option makes compress/uncompress write to the standard output; no files are changed. The nondestructive behavior of zcat is identical to that of uncompress -c.

Compress uses the modified Lempel-Ziv algorithm popularized in ”A Technique for High Performance Data Compression”, Terry A. Welch, IEEE Computer, vol. 17, no. 6 (June 1984), pp. 8-19. Common substrings in the file are first replaced by 9-bit codes 257 and up. When code 512 is reached, the algorithm switches to 10-bit codes and continues to use more bits until the limit specified by the -b flag is reached (default 16). Bits must be between 9 and 16. The default can be changed in the source to allow compress to be run on a smaller machine.

After the bits limit is attained, compress periodically checks the compression ratio. If it is increasing, compress continues to use the existing code dictionary. However, if the compression ratio decreases, compress discards the table of substrings and rebuilds it from scratch. This allows the algorithm to adapt to the next ”block” of the file.

Note that the -b flag is omitted for uncompress, since the bits parameter specified during compression is encoded within the output, along with a magic number to ensure that neither decompression of random data nor recompression of compressed data is attempted.

The amount of compression obtained depends on the size of the input, the number of bits per code, and the distribution of common substrings. Typically, text such as source code or English is reduced by 50-60Compression is generally much better than that achieved by Huffman coding (as used in pack), or adaptive Huffman coding (compact), and takes less time to compute.

Under the -v option, a message is printed yielding the percentage of reduction for each file compressed.

If the -V option is specified, the current version and compile options are printed on stderr.

Exit status is normally 0; if the last file is larger after (attempted) compression, the status is 2; if an error occurs, exit status is 1.

6.5 DCron

6.5.1 Installation

The NULL: device must be mounted and an s:crontab file must exist (see instructions below). Copy null-handler into your l: and add the appropriate Mountlist entry to your devs:Mountlist (see included Mountlist file). Create S:crontab with entries as you like.

6.5.2 Explanation

Inspired by Rick Schaeffer’s AmigaCron. I decided to write this one from scratch. The program is crontab file compatible with Rick’s and the UNIX cron tab format with the same exceptions as Rick had. Specifically, the rather than the UNIX 1-7 (Mon-Sun).

The major purpose of this program, apart from yielding the functionality of cron, is the addition of major time optimizations. The program loads s:crontab into memory and only reloads if the datestamp of the file has been modified (checked every 60 seconds). DCron also checks if the user has modified the system time.

The result is that my cron takes virtually no CPU.

[run <nil: >nil:] DCron [-d] logfile

Using the RUN command and redirecting both stdin and stdout to NIL:, you can safely close the CLI window that you ran DCron in.

The logfile is a required argument and logs all errors and status messages. Under normal conditions this file does not get very big. Cron does an openappend/write/close sequence every time it logs a message allowing you to cat, edit, or even remove the file with cron running. (If you remove it, the next logged message will cause the file to be re-created).

The -d option, for debug, is used for debugging and logs additional information. (may not be implemented in release)

The control file is S:CRONTAB and may contain one of three types of lines:

• A blank line

• A line beginning with a hash “#” which introduces a comment

• A cron line of 5 or 6 fields:

<min> <hour> <day> <month> <dayofweek> [<command>]

Each field <min> to <dayofweek> can be either a single asterix “*” which matches all times, or a comma delimited list of numbers or ranges which must be in numerical order. Assume the control file is scanned every minute. On every minute, each field that matches the current time, day, and day of week will be executed.

The <command> field is optional. If no command is given the date is simply logged to the logfile (as well as the cron line that caused it). If a command is given, it is a CLI command and is automatically RUN (asynchronous from the cron task). Standard in/out is NIL: The cron line that ran the command is logged.

* * * * * Date

Would execute the Date command every minute. The output is ignored. I.E. useless. Also, running something every minute wastes CPU.

0-3,5,7,40-50 * * * * Date

Would execute it at the hour, 1 past, 2 past, 3 past, 5 past, 7 past, 40 41 42 ... and 50 past every hour. Combinations can be used to yield more interesting results:

0 0,12 * * 0 Date

Would run Date at midnight and 12 noon, but only on sunday.

0 0 25 12 * Echo >ram:x ”Merry Cristmas”

Would execute the Echo command at midnight beginning christmas day and stick it in ram:x.

* * * * 2-3 Date

Is useless ... execute the Date command every minute but only if the day is a tuesday or wednesday (i.e. 1440 times on tuesday, 1440 times on wednesday, nothing for any other day).

0 4 * * 1 shell >ram:backups -c ”ChangeTaskPri -1;dobackups”

Would run a shell script to do my HD backup at 4:00 A.M. every Monday. (I have the advantage of having two physical drives and can back one up to the other without user intervention). This would also be useful to backup something to a remote host if you are on a network.

6.5.3 Notes

All cron-commands are automatically RUN in the background, you do not need to say ’run’ in the command argument of the s:crontab file.

You do not have to redirect standard command output. I.E. if you do a ’List’ from cron, the output is sent to the cia.

You may want your PATH to be setup before running DCron so DCron gets your path.

6.6 DMail

Usage: DMail go into mail shell if mail pending DMail -O go into mail shell whether you have mail or not DMail path mail somebody (go directly to mail editor) DMail -f file use a file other than your default mail box

There are other options. To get a complete list of options enter ’DMail -O’ at a CLI prompt, then at the mail prompt enter the ’help’ command.

6.6.1 Explanation

The file MAN:dmail.help must exist for dmail’s online help to work! DMail’s online help is extensive and quite flexible. You need only specify a fragment of what you are looking for and the help command will do its best to find the appropriate commands.

DMail is an interactive mail editor that allows you to view and respond to messages in your mail box as well as generate new messages from scratch. DMail has a huge number of commands and options (’set’ variables) that cannot be described in a manual entry like this so I leave those to the online help capability.

The basic dmail commands are (and these may be abbreviated):

• type [msgno] type a message

• reply [msgno] reply to a message

• Reply [msgno] reply to a message and include original text

• mail path send new mail to somebody

• d [msgno] delete a message

• dt delete current msg and type next one

• db delete current msg and type previous one

• list list available messages

These are only a few commands out of many. Commands like mail and reply bring up an interactive editor (default is DME but you should be able to use your favorite editor... just change the defaults in UULIB:Config).

When sending and replying to email, what you see from the editor is pretty much what you get. If you quit out of the editor without saving the email is aborted. If you save and quit from the editor DMail will scan the message and figure out who to send it to by extracting addresses out of the To:, Cc:, and Bcc: fields. DMail then runs Sendmail to actually send the message (which may wind up queueing it via UUCP to somewhere else).

You list the primary recipients of the message in the To: field, separated by commas. You may continue an address list like this:

To: blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, Cc:

The Cc: field lists carbon-copy recipients of the message... people you want to see the message but for which the message is not primarily meant for. This can be left blank or deleted.

The Bcc: field lists blind-carbon-copy recipients of the message. Specifically, the message gets sent to these people but the Bcc: field itself is NOT propogated, so nobody but you knows that the message was also sent to these people.

Every message should have a Subject: field, usually a one liner that describes the subject of the message. When replying to a message you usually keep the original message’s Subject: line and prepend an ’Re:’ to it... normally you do NOT allow Re:’s to build up. I.E. Re: Re: Re: ¡original subj¿ is not considered proper.

When using the upper case Reply that includes the original text of the message, please prune out as much as you can to decrease redundant bandwidth. The original most likely has a copy of the original message anyway and the idea is to simply provide a soft reminder to jog the originator’s memory.

A blank line always separates the header list from the message body!!!

DMail attempts to pick the proper return path when you reply to a message and place that path into the To: field for you.

If confusion occurs, your best bet is to look at the ’Received:’ fields in the mail header (the HEADER command in DMail, but read the online help for the HEADER command before using it). These fields tell you exactly which machines the message got routed through and the order in which it was routed.

6.7 DNews

Usage: DNews

6.7.1 Explanation

DNews is the news reading program, written by Matt Dillon. DNews does not modify or delete any news files, but instead keeps track of read articles via a <user>.DNewsRC file... A different file for each user. The format of the .DNewsRC file is as follows:

<enabled> <newsgroup> <read-articles> <marked-articles> <killedarticles>

Only the <read-articles> field is currently implemented, other fields are left as a single ’-’. The field consists of one or more comma delimited sub fields with optional numeric ranges, in sorted order:

y comp.sys.amiga.tech 0-17,22,24-30 - -

Indicates that articles 1-17, 22, and 24-30 have been read. The DNews program parses and rewrites the .DNewsRC file according to what you did while in the program. DNews maintains this file for you. The user normally never even reads the file.

If a <user>.dnewsrc file does not exist in your UULIB:, DNews will create one automatically by scanning UUNEWS: for existing newsgroups. If you later decide to add or drop a newsgroup you must edit the <user>.dnewsrc file.

On startup, DNews comes up with a small window listing the available newsgroups and the number of unread messages in each. You may click on a given newsgroup at any time to begin reading that group. DNews will bring up a second window containing the current article being read.

In the article window keys are defined to move around and do various operations on the article (such as paging up and down, right and left, moving on to the next article, killing it, following its references, etc...). See the command list at the bottom of the manual page for more information.

6.7.2 Commands

The ’h’ command brings up a help window listing the various commands. The most used commands are:

• <space> page down

• n next

• m follow references stopping at the end • M follow references going back to the first unread article at the end

• f followup to the newsgroup

• r reply to the poster

• p post new news

Below lists the major features of DNews. These commands are also indicated in the command table at the bottom of this section.

• [k/K]illing a train of articles DNews allows you to kill future articles that reference the current article. The [k]ill command does so for the current session, while the [K]ill command does so for 30 days. The kill command uses the References: field to determine which articles to kill. Any article whose References: field contains the Message-ID of the article you killed or the Message-ID of any article in the killed article’s References: line will be skipped automatically (note that explicitly following a reference list with the ’m’ command does not skip killed articles). Long-term killed article Message-ID’s are stored in the file <user>.dnewskl in UULIB:.

• [m/M]essage following a train of articles DNews allows you to follow a particular train of articles related to each other. The [m]essage command searches for an article whose References: field contains the Message-ID of the current article or a Message-ID matching a Message-ID in the References: line of the current article. [m]essage will find ALL references. [M]essage is the same as [m]essage except that [m]essage stops when it can no longer find any references while [M]essage rewinds to the first UNREAD article (i.e. you continue on to the next topic).

6.7.3 Commands

• h help

• v go to first unread article. That is, continue on with the next topic after reaching the end of a [m]essage sequence. Note that [M]essage is equivalent to [v] when there are no more references.

• m mark article as read and follow references, stopping when no more references to the article are found. Normally you hit this key repeatedly to follow articles with a common subject.

The [m]essage command has the ability to pick up a train of articles in the middle of a sequence.

The ’m’ command currently skips articles marked as read. Thus, after sequencing through with ’m’ trying to do so again will not work (because you have read all the articles!). This is a bug.

• M [m], but instead of stopping at the end of the train it does the equivalent of a [v] command.

• g goto a specific article and mark as unread

• n mark article as read and go to the next article number

• s do not mark article as read, go to the next article number

• b go to previous article and unmark (mark as unread)

• k kill refs to article for this session

• K kill refs to article for 30 days

• U unkill refs to article (removes Message-IDs from kill list)

• w write article to file

• r reply to sender of article

• R reply to sender of article including original article contents

You should trim the included text down to size just so the sender gets the jist of it. He knows what he sent.

• f followup article to newsgroup (your article references the current article)

• F followup article to newsgroup including the original article’s contents. You must trim the included text down to size just so people get the jist of what you are commenting on. Net users have access to the full contents of the article you are referencing and do not need it told to them over and over.

• p Post a new article. You may modify the NewsGroups: line however you like, it need not be restricted to the current news group.

6.7.4 Display cursor controls

8 9  *  page-up  top

4 o 6 left-half * right-half 2 3 * page-down bottom <space> also pages down.

6.7.5 References: support

DNews automatically adds a References: header to any followups you make, supporting the referencing system.

6.7.6 Multi-User support

By setting the USERNAME and REALNAME environment variables multiple users on your amiga may independantly read and post news. Each has his own . dnewsrc and . dnewskl file.

6.7.7 Notes

• Any window may be moved or resized at any time. DNews will remember the size and placement of all windows and bring them up in the same configuration the next time you use DNews.

• Arp.library must be present for the ’w’ (write to file) command to work.

• DNews will scan the remaining articles for their Message-ID: and References: lines. These lines are cached within DNews for efficiency so only the first [m]essage command will be slow.

6.8 Expandm

Usage: Expandm alias1 alias2 ... aliasN

6.8.1 Explanation This program expands the specified aliases and displays the result of the expansion.

6.9 From

Usage: From [user]

6.9.1 Explanation

The From program prints out the From: and Subject: fields of received mail. If no user is specified, the UserName in UULib:Config entry is used. Multiple users may be specified. From attempts to pick out the real name of the sender from the From: field.

6.10 Getty

Usage: Getty -Sserialname -Uunit -Bbaud -Bbaud.. -Mc -bn -ln -m1 -r0 -h0 -c0 -d0 -xn -A -7 -0 [modem-cmds]

6.10.1 Explanation

Getty now works with multi-serial ports. The 1.08 and 1.09 getty were broken due to bugs in the serial.device ... the 1.10 Getty now fixes this by introducing file locking constructs to lock the serial port instead of intercepting the device vectors.

In order to behave well with getty, you must use the LockSerial command to run any external programs that use that particular serial port. You can no longer run terminal programs direct because they are no longer locked out by getty if getty is accepting a call. The program Lockserial

may be used to synchronously run terminal programs without requiring one to kill Getty.

However, programs run from a password entry should not use LockSerial because the port has already been locked by getty for the program.

Getty hangs on the specified serial port (serial.device unit 0 by default) waiting for connections via the connected modem. Once a connection is accepted Getty adjusts to the proper baud rate using the CONNECT message, -B, -A options, then provides a Login: request to the caller.

Getty disconnects any caller who cannot provide a legal Login and Password within 60 seconds. It also allows only 5 login attempts before disconnecting, and any illegal password will result in a 4 second delay before the next Login: prompt is output.

Upon receiving a legal Login and and Password, verified via Passwd, Getty will execute the program specified in Passwd, usually UUCico, and stay off the line until UUCICO returns. When UUCICO returns, Getty will disconnect the caller and reset the modem, returning to its original state.

The file Getty-Header contains a couple lines of text that are sent over the serial port before the Login: request. In it you normally have your machine type, name, etc...

Getty runs the specified program in the password entry adding the following arguments:

-Getty -DEVICE devicename -UNIT unitnumber

(uucico will recognize said arguments and not attempt to initialize / waitfor calls / hangup the modem itself, nor will uucico attempt to lock the already locked serial port)

In order to monitor the request lock for the serial port (see LockSerial and src/util/lockserial.c), GETTY must open a file in T: for write and then close it every 3 seconds. Thus, T: should be in your RAM disk.

6.10.2 Options

Options are given on the command line when you run Getty. You can also update a currently running Getty’s options by running Getty for the same device and unit again with the options that need to be changed. Getty will detect whether another getty is already running on that port and send the new options to the running getty, then return.

• -Sserialname Specify serial device, default ”serial.device”

• -Uunit Specify unit number, default 0

• -Bbaud Specify up to 32 baud rates

• -A Specify modem will adjust to a single baud rate (locks the serial.device at the first baud rate in the -B list)

• -7 Use SERF7WIRE protocol while online, else uses no protocol while online. If you are using a modem with speed conversion you need this option or you will most likely overflow the modem’s buffer!

• -Mc Select Modem type, c = m Multimodem h Hays d Dumb (no AT or +++ commands are sent to the modem ever).

• -mn Set modem speaker level, default 0 (ATMn command).

• -rn Set modem to answer on the Nth ring (modem must support ATMn). 0 disables answer capability. The default is to answer on the second ring.

• -h0 Ignore CD (carrier detect). If this option is specified a continuous carrier detect is assumed, causing Getty to request Login:’s over the line as soon as it receives a CONNECT message. It is suggested you ONLY use this option when combined with -c0

• -c0 Do NOT look for a CONNECT message from the modem; useful for dumb modems.

• -d0 Normally Getty will disconnect by dropping DTR. If this option is specified, Getty will use the less reliable +++ ATH0 sequence.

If your modem has the capability to LOCK the computer’s serial port baud rate, it is *strongly* suggested that you do this for +++ to be reliable.

• -xn Set debugging level to n. If specified debugging messages are sent to stdout instead of Logfile to avoid GETTY:LOGFILE getting too large for busy systems, you can always add an entry to your crontab to delete it once a week (or whenever), or use ’trimfile’ to trim it.

• -l1 add -HLINK option to commands started by Getty.

• -b1 add -BAUD <baud> option to commands started by Getty, this informs the run command what the actual connect baud rate is regardless of the serial port communications baud rate (which is already preset by getty for the application)

• -0 Kill any already-running Getty for this serial port and unit.

• Modemcommands You may specify up to 16 specific commands to be sent to the modem whenever it is initialized (usually after a disconnect and on startup). Each command will be sent to the modem with a CR on the end and a seconds delay afterwords.

Example:

ATS2=.

This is useful for provided specialized modems with the appropriate initialization strings.

6.10.3 Examples

• Run a Getty for a MultiModem

run ¿nil: ¡nil: Getty -Mm -A -B19200

• Run a Getty for a Hays Modem

run ¿nil: ¡nil: Getty -Mh -B1200 -B2400

• Run a Getty for a Hays Modem and use +++ instead of DTR to hangup. NOTE, when using -d0 you should lock the serial port baud rate (if possible) or +++ may be unreliable as a hangup method.

run ¿nil: ¡nil: Getty -Mh -B2400 -d0

• Modify options to a Getty already running in the background

Getty -m1 ; Set speaker on during dialing Getty -m0 ; speaker off at all times.

Getty -0 ; kill background Getty

• Example crontab entries

Assuming a getty has been run in the background from your startup sequence, the most common desire is to disable the modem speaker while you are asleep, and enable it at other times. The following crontab entry will accomplish this:

0 23 * * * getty -m0 0 11 * * * getty -m1

You can also kill (getty -0) or restart getty from your crontab, though the prefered method is to leave it running and only disable/enable the autoanswer (-r option) for those times you wish your modem to not accept calls.

• Example hardwired entry

Lets say you have two amigas connected together via a permanent serial line. To run AmigaUUCP between them you want to run Getty on one of them (NOT BOTH!). On machine A you would run Getty as follows:

(Machine A):

run >nil: <nil: Getty -B9600 -Md -h0 -c0

The Passwd entry for the remote machine would be something like: (Machine A)

machb,uupc,203,0,(UUCP-NOPAS),ram:,uucico -h0 -o

Machine B would have an L.sys entry that looks like:

macha Any SER: 9600 ”” ”” \r\c ogin: machb sword: uupc

In the above configuration, with Getty running on Machine A, Machine B would run uucico (usually every X minutes from dcron) using:

1> uucico -smacha -h0 -o -xx Unfortunately, with a permanent serial line you cannot run Getty on BOTH machines. This will cause one Getty to echo the other’s login message and vise versa, causing an infinite loop. So only one machine can poll.

– Programs run with lockserial must not auto-detach from the CLI or lockserial will believe that they have exited and give the port back to Getty, causing major problems.

– A CONNECT message from the modem with no baud rate specified will cause Getty to use the first baud rate in the -B list. If the -A option is specified, Getty *always* uses the first baud rate in the -B list and never switches to any other baud rate.

6.11 HostName

Usage : Hostname [-finv]

6.11.1 Explanation

Hostname is the program that is used to display the current host name of the system. This name is used by many of the networking programs to identify the machine.

Usually, the system name is defined in UULib:Config (for XenolinkUUCP) but may be overriden by environment variables. This program is used to display the resulting value.

6.11.2 Options

Hostname [-finv]

• -v Accepted, but ignored.

• -i Accepted, but ignored.

• -n Accepted, but ignored.

• -f Present the Fully Qualified Domain Name (FQDN), which is constructed from NodeName and DomainName instead of the simple NodeName. This is highly recommended.

6.12 LockSerial

Usage : LockSerial [-D device] [-U unit] [-A] ”command”

6.12.1 Explanation

LockSerial is used to run programs (e.g., terminal programs) after ensuring that a given serial port and unit is free. It locks the port, runs the program, then unlocks the port. The ”command” argument should NOT run things in the background, since the port will be unlocked too early. You can RUN the lockserial command itself, if you wish.

Getty need not be running, but if it is it will maintain a port lock. When Getty sees the lock request it will close the device and relinquish control to the requesting program.

UUCiCo locks and unlocks the serial port internally to itself.

Do not run uucico with this command!

This change was made because the hacks in Getty to track individual units within a serial device were broken and had to be removed. This also allows getty to close its reference on the device before another program opens it, thereby avoiding some well known bugs in the A2232 serial device.

6.12.2 Warning

You cannot run auto-detach programs with LockSerial. Such programs will detach from the CLI and appear to have exited, causing LockSerial to give Getty the serial port back.

LockSerial utilizes the OwnDevUnit.Library. Programs that directly support this library do not need to be run with the LockSerial program.

6.12.3 Options

• -D device The serial device, default serial.device

• -U unit The unit number, default 0

• -A Do not lock up waiting for access if someone else has currently got the device locked.

• Command The command to run (if the command takes args, the entire thing should be in quotes)

Example:

1> LockSerial -U2 ”XBBS UNIT 2” 57

6.13 News

6.13.1 Explanation

The NEWS system consists of many programs:

• RNews

RNews is run by UUXQT which is run by UUCICO after a transfer. RNews takes incoming news (which is normally batched) and breaks it up into articles, placing each article in the appropriate newsgroup in UUNEWS:. The sequence number of the article is tracked with a file called .next that exists in each news directory.

RNews is also called by PostNews to post articles you send out locally as well as queue them, via the UULIB:Sys file, to other systems (see BatchNews).

• TrimNews

TrimNews is normally run nightly by a DCron entry and deletes all news files over N days old. The number of days is programmable for each newsgroup from the UULIB:NewsGroups file. Each line in this file is of the form:

<newsgroup> <#days-till-expiration>

example:

comp.sys.amiga.tech 15

Where the second field is optional. If the second field does not exist it is assumed to be 7 (7 days). If the second field is 0 then that particular group will not be trimmed.

If you are receiving news this is pretty much a neccessity to prevent news files from building up and filling the disk.

Not running trimnews means that articles will continue to pile up until the disk is full!

• DNews

DNews is the new news reader, ANews is the old. ANews is being phased out.

DNews may be used to read and reply to news. DNews keeps track of the articles you have read in a file called UULIB:<user>.DNewsRC, where <user> is the UserName config entry. The USERNAME environment variable overides the config entry allowing multiple news readers to have their own DNewsRc file.

DNews does not delete or modify any news file, allowing news routing in a future UUCP release as well as multi-user support.

• BatchNews

BatchNews takes articles queued to other systems via the UULIB:Sys file and batches them together into actual spool files. Each system in UULIB:Sys has a file called UUSPOOL:BATCH/<system name> which lists articles bound for that system. This file is appended to by RNews when it receives news.

• CBatch

CBatch is called by BatchNews to compress an article

6.13.2 Receiving News

To receive news you must contact a site that receives news and ask them to send you news. Sites normally handle this in one of two ways:

• Lazy sites will want to send you ALL the newsgroups or not send you news at all.

• Properly managed sites will be able to batch up specific groups for you. This is preferable, since you will most likely only want to read a couple of groups.

The setup on your end consists of editing the UULIB:NewsGroups file to list all the groups you want to extract out of the stream. Henceforth, any news sent to you by the other system will automatically be unbatched and available to DNews. Here is an example of this file:

comp.sys.amiga 7 comp.sys.amiga.tech 7 news.admin 7 rec.games.frp 7 news.misc 7 junk 1

Each line consists of two fields. The first is the name of the newsgroup. The second field specifies the number of days a particular message should be kept on your system before it expires.

The TrimNews program scans all newsfiles looking for files older than the specified number of days and deletes them. TrimNews should be run from your cron once per day. If you do not run TrimNews, news files will build up over the weeks until you run out of disk space.

Note that there is a ’junk’ group specification in UULIB:NewsGroups. This is a dummy group to which all messages to unlisted groups are placed. Generally you will want to expire this group on a per day basis rather than a weekly (or whatever you choose) basis. However, if you are forwarding news to other sites you will want the timeout to be the same as for other groups. See Forwarding News below.

6.13.3 Posting News

You can post news from DNews. In order for the posted news to be properly queued to your news feed you must have an entry in UULIB:Sys that looks like this (assume ’foo’ is your news feed):

foo:*

When you post from DNews the article is posted locally and the UULIB:Sys file specifies to RNews which other machines should receive the news.

Finally, before you run UUCico you must run the BATCHNEWS program to pull the individual article lists destined for machines and actually create batch files for them in UUSPOOL:. Normally, BatchNews is run by DCron just before UUCico gets run by DCron.

If you do not propogate news to other sites, and basically would otherwise run ’BatchNews’ manually every time you post an article, you can have AmigaUUCP automatically run BatchNews for you on a per-posting basis. To do this add the following Config entry to UULIB:Config:

AutoBatch autobatch

This will cause BatchNews to be run automatically whenever you post news.

6.13.4 Forwarding News

Please read the chapters ’Sys’ and ’BatchNews’... basically, you can pass news to other sites by specifying them in the Sys file.

If your machine has a lot of traffic coming from other sites (say you host a local Amiga Users Group USENET sub network) you may want to run Batch-News several times a day... maybe even once an hour depending on how often you expect to get called or call other sites. Remember that news queued to other machines does not actually get spooled for transfer until batchnews is run.

The system works by storing references to articles in the directory UUS-POOL:BATCH/ ... you must create this directory if you intend to forward news. When BatchNews is run, this directory is scan and the referenced news articles are pulled from the appropriate directory in UUNEWS:, compressed, and batched together for transmission. A given news article will never be batched to a site that it has already been to, by virtual of a comparison made between each prospective news site and elements in the news Path: header for a given article.

Note that you can propogate any subset of the groups you receive, whether or not they are listed in UULIB:NewsGroups .. this is because any groups not listed in UULIB:NewsGroups will be placed in the UUNEWS:JUNK directory. These articles are still candidates for news batching, however, allowing your personal group preferencese to not interfere with your propogation of groups to other sites.

Refer to the MAN/DNews chapter for specific information on DNews.

6.14 NoReq

Usage : NoReq [off] [on]

6.14.1 Explanation NoReq is a simple program which disables requesters for a shell. You generally want to run this program for any remote logged in shell (since the users will not be able to cancel requesters)

6.14.2 Examples NoReq disable DOS requesters NoReq on disable DOS requesters NoReq off re-enable DOS requesters

6.15 Null:

Usage : Mount NULL:

6.15.1 Explanation

The NULL: device is a dos handler designed to allow programs such as DCron, DME, etc... to run other programs in the background while still allowing the user to close the CLI window these programs were originally backgrounded on.

NULL: Requires L:Null-Handler and a proper mountlist entry.

6.15.2 Mountlist entry

NULL: Handler = root:L/null-handler Stacksize = 1024 Priority = 5 GlobVec = 1 #

Getty also uses NULL:. You normally Mount NULL: in your startup-sequence.

6.16 PostNews

Usage : PostNews <newsfile [-f user] [-r ”realname”] [-R reffile] [-x delfile] [newsfile]

6.16.1 Explanation

Postnews posts news by building a complete news article based on the input from ”newsfile”, and if specified ”reffile”, and then submitting that article to RNews.

The newsfile may be either standard input (stdin), or the *last* argument on the command line.

The newsfile is normally generated by the user with some help from a newsreader. It must contain a Newsgroups header. It may contain ”From”, ”Date”, ”Message-Id”, ”Organization”, and ”Subject” headers as well. If a ”Path” header is not the first line in the ”newsfile” it will be generated. If they are not present, they will be generated. A ”Distribution” header is recommended, but not required.

If -f is not specified, the username is extracted from the environment first (ENV:USERNAME), UserName config entry second.

If -r is not specified, the user’s real name is extracted from the environment first (ENV:REALNAME), RealName config entry second.

The username and realname are used in building a ”From” header if it isn’t present. They are required entries to post news. A ”nodename” configuration variable is also required.

If -R is specified, its associated file contains one or more header lines (no blank lines) to be included in the news. This file is normally generated by the news reading program (for example, to generate the References header) and is not usually editable by the user.

Any files specified with the -x option are deleted after the news is queued with RNews. Up to 31 files may be specified. This allows you or the newsreader to RUN PostNews in the background and have it clean up after itself when it is done.

If PostNews detects any errors, the temporary files are not removed; and they can be resubmitted after the error is corrected.

6.17 RMail

Usage : rmail user...

6.17.1 Explanation The rmail command interprets incoming mail received via UUCP, and passing the processed mail on to the required program(s).

The rmail command is explicitly designed for use with uucp and sendmail.

6.18 RNews

Usage : RNews [-D number] [-x number] [-h] [-n] [-o] [-t directory] [-1] [-p] [-u decompressor] [newsfile] [<newsfile]

6.18.1 Explanation

RNews : unbatch, store, and forward news articles.

RNews is normally run by UUXQT and POSTNEWS to accept new news articles and post them to UUNEWS:. If the UULib:Sys file so indicates, a flag record is created in the UUSpool:Batch directory to queue the article to other hosts.

The input to RNews is either a batch of articles, or a single news article. If it is a batch, it may be either compressed (using the standard Unix cunbatch format) or uncompressed.

RNews is more efficient when newsfile is NOT standard input.

If RNews fails, a terse error message is printed to stdout, and additional information is stored in UUSpool:Logfile. On failure, RNews returns thirty (30). On success, RNEWS returns zero (0).

6.18.2 Options

• -1 If more than one newsgroup on the Newsgroup header is kept locally, only store the first in the news tree.

• -D number Set debugging level.

If ”number” is 10 or more, temporary files created by RNews are not removed.

• -h Do not use hardlinks to store articles which exist in multiple newsgroups. Instead, create copies. (Only used for Exec V37 and above.)

• -n Dummy. Process all articles, but do not store them in news tree. (Used in debugging.)

• -o Create and maintain NewsOverview style article summaries in the news directories. (Not yet implemented.)

• -p RNews is being called by PostNews, and shouldn’t run any decompression program, even if specified by a -u argument.

• -t dir Specify a directory where RNEWS temporary files are stored. If this is set to RAM: or T:, then RNEWS can be expected to execute much more quickly. However, it will consume much more memory.

• -x number Set logging level. When ”number” is one (1) or higher, additional information is logged, at some cost in additional processor and I/O time.

• -u decomp Specify the decompression program to be used by RNEWS. RNEWS has the ”compress” algorithm built-in, others require an external program. Typically this will be ”gunzip”. (Only allowed for Exec v37 and above.)

6.18.3 Notes

Local postings are much more efficient if RNEWS is called with the -p argument. Otherwise, if the -u argument is also specified, RNews will attempt to decompress the input file prior to deciding that the input is a local post.

The GZIP format is much more efficient in terms of data compression than the standard ”compress” method used by default in AmigaUUCP (and by C News). This means that files may take a much shorter period of time to receive via UUCP. The advantage to the ”compress” method is that RNEWS has that algorithm built-in. To use another decompressor, the -u argument is provided (for C News RELAYNEWS, the -d argument is used). The alternate decompressor will typically be GUNZIP, which can deal with ”pack”, ”compress” and ”gzip” format batches. To use this as your default, place the following line in your UULib:Config file:

RNEWS UUCP:C/RNews -u gunzip

Obviously, GUNZIP must be in the search path, or an absolute path specified. Other default options may also be specified (such as -h and ’-t t:’). Your performance will be best if your version of GUNZIP is pure (and made resident).

RNews supports two methods of notifying external programs that new news has arrived:

• If a public message port named ”T:NewsRdy” exists, then RNews will cause the associated signal of that message port to the task set for that message port (SigBit and SigTask).

• If UULib:Config has an entry for NewsReadyCmd then RNews will execute that program according to the following template:

”RUN NewsReadyCmd -x T:NewsRdy”

where you replace ”NewsReadyCmd” with the name of the program you wish to run. RNews will create a file named ”T:NewsRdy” (if it does not already exist) prior to calling that program (the intent being to provide a mechanism for timestamping the last news arrival).

These options are tried in order. They are not required, and most installations will not have a use for them.

RNews does not process Control messages per se, but will file them into uunews:control if Control is listed as a valid newsgroup in your uulib:newsgroups file. If Control is not listed as valid newsgroup, RNews will ”drop control message on the floor” and not store them at all on your system. When RNews detects a Control message, a note is logged in UUSpool:Logfile.

6.19 SendMail (RMail)

Usage : SendMail ¡mailfile [-f user] [-R realname] [-t to] [-c ccto] [-b bccto] [-s subject] [-r] [-raw]

RMail <mailfile users...

6.19.1 Explanation

-r is specified to force sendmail not to process the ’From ’ header and is automatically specified when sendmail is run as rmail. Note that if run as rmail, the command line contains only To: addresses, options are ignored.

For sending mail, all options are optional. SendMail will process and regenerate the Subject:, To:, Cc:, and Bcc: lines, appending any additional specifications on the command line. SendMail will generate From:, Date:, and other required headers, then send the mail to the appropriate destination.

A given mail file consists of zero or more headers, a blank line, then the mail contents. The -raw option may be used for unformatted mail (see below).

• -f user

Specify user sourcing the mail, generates a ’From:’ header. This header will be overridden by any From: headers in the data file.

• -R realname

Specify real name of user sourcing the mail. This name is placed in parenthesis after the user name in the generated ’From:’ header.

• -t to

Specify an email address to send the mail to.

• -c ccto

Specify an email address to send a carbon copy to.

• -b bccto

Specify an email address to send a blind carbon copy to (other (recipients do not know you sent the mail to this address because the Bcc: line is never propogated).

• -s subject Specify the subject of the article. The subject must be placed in quotes if it contains tabs or spaces.

• -r

Specify that sendmail is to go into ’rmail’ mode. This mode also occurs if sendmail is renamed to rmail and run as rmail. In this mode, the very first line of the data file MUST be in the ’From ’ form (From with a space and no colon), as in UUCP received mail. After this headers are expected, then a blank line, then the mail data. If not specified and sendmail is run, the ’From ’ is not expected but the headers, blank line, and mail are.

• -raw

Specify that the the text body on stdin is unformatted. Sendmail does not attempt to scan the text body for headers but assumes it is entirely data. Otherwise, the text body must contain zero or more headers, a blank line, and then the text body.

6.19.2 Examples

sendmail <datafile -f root -t marco -s test

Where the datafile (on stdin) is not formatted... does not contain any headers or even necessarily a blank line at the beginning.

6.19.3 Config variables

• BounceCcPostMaster Y/N

If a message is bounced, for any reason, then the local postmaster will receive a copy of the error message and the headers.

The postmaster does *not* receive a copy of the body of the message.

• BounceNoDomain Y/N

Default: N.

If a domain is invalid, or the incoming message is not for this domain, then bounce the message.

Remember that you must also remove the ’*’ (default node) entry in your Domain file to have this do anything reasonable.

Prior to 1.17beta4, this option was known as MailBounce.

• BounceNoUser Y/N

If a user is invalid, based on Checkuser, or if a message cannot be delivered for any reason, then return the message to the originator.

Otherwise, drop the message.

• CheckUser

A program which will validate the existence of the specified local user. Sendmail will call the specified program as:

checkuser username

The program should output (to stdout) either a ”*” followed by anything, which indicates that address is invalid, or repeat the username.

When ”*” is output, sendmail will bounce the mail.

• DomainName

(Also used for News.) The domain in which your system resides. Default ”.UUCP”.

• DomainPath Y/N

(Also enables DomainPath for news.) Places your fully domained host name in mail headers instead of USENET node name. Use ONLY if your feed requires it. Default N.

• LogMail Y/N

If set, sendmail and rmail will log information about each mail message sent and received. By default, this information is placed into UUSpool:MailLog, but that may be modified with the MAILLOG configuration option.

• MailLog

Where to log mail send/receive information. See LogMail.

• MaxRMailLen

If 0, means only one recipient per queue file is allowed (some mailers are restricted like this). If non-zero, then specifies maximum length, in bytes, that the ’C rmail’ line in the X. file may be. If the recipient list is larger than the buffer length, then multiple queue files will be generated.

• MailReadyCmd

A command to be executed when a local delivery of mail occurs. Executed only once per sendmail/rmail invocation.

• NodeName

(Also used by news.) Defines the name of your computer system. No default.

• SmartUUCP Y/N

If SmartUUCP is set, then the ”From ” line generated by sendmail does not contain a ”remote from” string, instead it contains a fully qualified domain name (FQDN). Some UUCP systems do not support a FQDN in the ”From ” line. Default N.

• StripUUCP Y/N

Strips the ”.UUCP” off any addresses that have it for Domain comparisons. Primarily there for the UUNET.CA folks. Default N.

• TimeZone

(Also used by news.) Defines the TIMEZONE used in generating dates. May be in +0700/-0400 format. Defaults to +0600.

• UUX

The name of the UUX program to execute to send mail via UUCP. Prior to 1.17, SENDMAIL built UUCP control files directly. Now it calls UUX to do so.

6.19.4 Notes

• Any unqualified To: or Cc: fields (i.e. local users) will be qualified with your machine’s full domain name. This includes local users in aliases.

• Sendmail will attempt to group multiple recipients of a given message into a single batch file, if possible.

• See UUMan:Aliases for a description of the way aliases are expanded on the To: field. A double-colon specification in the alias causes it to NOT be expanded in the To: field.

6.20 SplitMbox

Usage : SplitMbox [-c] outTemplate bytesPerFile inTemplate [outstart# [instart#]]

6.20.1 Explanation

SplitMbox is a manual utility useful for those people (like me) who archive all their email. I archive my email by having an Alias append mail to my user name, dillon, to a file called ’mbox’, in addition to sticking it in my ’dillon’ mail box.

I then set up dmail such that it does not try to transfer read items into the mbox (because the mail has already been stuck there by the alias). I also set the dmail ’archive’ variable so any mail I send out is also archived to the same mbox.

What generally happens is that your MBOX file slowly grows larger and larger. At some point, so dmail can access it reasonably fast, you rename it and start a new mbox. Eventually you end up with something that might look like this:

mbox.001 423433 mbox.002 253933 mbox.003 983943

SplitMbox will take a sequence of files starting with ¡inTemplate¿.001 and break them up on item boundries to output files starting with ¡outTemplate¿.001 ... for example,

SplitMbox tmp:out 200000 mbox

SplitMbox will take the files mbox.001, mbox.002, and mbox.003 (it goes on until it can find no more files), and outputs tmp:out.001, tmp:out.002, tmp:out.003, tmp:out.004, etc... where the tmp:out#? files are on the order of 200KBytes each, allowing for easy compression and storage to floppy.

You can specify additional arguments to set the starting number for the input template (default is 1) and starting number for the output template (default is 1).

Additionally, if you give the -c option SPLITMBOX will automatically run COMPRESS on every output file closed out, leaving the last one (that didn’t reach the byte limit) uncompressed. You can then copy the archived files to floppy for permanent storage.

6.21 Tar

Usage : gnutar ... 6.21.1 Explanation A port of gnutar is shipped with AmigaUUCP, run: 1¿ gnutar +help For more information.

Note that gnutar’s -z/-Z/+compress options are not functional. 6.21.2 Options

• -A +catenate append tar files to an archive

• -c +create create a new archive

• -d +diff find differences between archive and file system +delete delete from the archive (not for use on mag tapes!)

• -r +append append files to the end of an archive

• -t +list list the contents of an archive

• -u +update only append files that are newer than copy in archive

• -x +extract extract files from an archive Other options:

• -b +block-size N block size of Nx512 bytes

• -B +read-full-blocks reblock as we read (for reading 4.2BSD pipes)

• -C +directory dir change to directory DIR

• -f +file F use archive file or device F (or hostname:/dev/file)

• -G +incremental F create/list/extract GNU-format incremental backup • -h +dereference don’t dump symlinks; dump the files they point to

• -i +ignore-zeros ignore blocks of zeros in archive (normally mean EOF)

• -k +keep-old-files keep existing files; don’t overwrite them from archive • -K +starting-file file begin at FILE in the archive • -l +one-file-system stay in local file system when creating an archive • -m +modification-time don’t extract file modified time

• -M +multi-volume create/list/extract multi-volume archive

• -N +after-date date only store files newer than DATE

• -o +old-archive write a V7 format archive, rather than ANSI format • -O +to-stdout extract files to standard output

• -p +same-permissions extract all protection information

• -P +absolute-paths don’t strip leading ‘/’s from file names +preserve like -p -s

• -R +record-number show record number within archive with each message • -s +same-order list of names to extract is sorted to match archive

• -S +sparse handle sparse files efficiently

• -T +files-from F get names to extract or create from file F

• -v +verbose verbosely list files processed

• -V +volume VNAM create archive with volume name VNAM +version print tar program version number

• -w +interactive ask for confirmation for every action

• -W +verify attempt to verify the archive after writing it

• -X +exclude FILE exclude files listed in FILE

• -z, -Z, +compress filter the archive through compress

• -[0-7][lmh] specify drive and density

6.22 TrimFile

Usage : TrimFile [-N] file1 file2 ... fileN

6.22.1 Explanation

TrimFile trims the specified files to N lines each. If no -N argument is given the files are trimmed to 100 lines each.

The -N may occur anywhere on the argument line.

The last N lines of the file are kept. Each line may be up to 256 characters long.

TrimFile allocates memory to hold the lines and so should not be used with large numeric arguments.

6.23 TrimNews

Usage : TrimNews [-all] [-h hours] [-d] [-n]

6.23.1 Explanation

TrimNews deletes news files that are older than N days, where N is specifiable on a per-newsgroup basis. The UULIB:NewsGroups containing acceptable news groups has a second field which optionally specifies the number of days old a message is allowed to get before it is deleted. Example:

comp.sys.amiga.tech 10

If the number is not specified, 7 is assumed. If the number is 0, then no messages in that newsgroup will ever be deleted by TrimNews.

TrimNews is normally run nightly from your crontab. The sample crontab has an entry for TrimNews.

The creation date of the news file is used to determine whether to delete it or not.

The -all argument indicates that all news articles should be deleted regardless of age. The .next files are NOT deleted.

The -h ¡hours¿ argument says that for entries where number of days is *not* specified, then apply ¡hours¿ hours instead.

The -d argument causing extensive debugging information to be output. The -n argument causes Trimnews to *not* delay 2 seconds between pro-

cessing each directory. Trimnews normally does this on 3.0 and above, due to some filesystem problems in beta OS’es released to developers.

6.24 UIdent

Usage : UIdent executable file

6.24.1 Explanation

UIdent extracts version information from any AmigaUUCP executable. For example:

1> UIdent uucp:c/sendmail uucp:c/sendmail @ sendmail.c V1.14.19 Sep 10 1991

When reporting bugs to me you should always include the exact version number for the executables in question.

6.25 UName

Usage : UName [-amnprsv] 6.25.1 Explanation UName lists various pieces of information about the system it is running on; depending on the argument specified. If no argument is specified, then ”-n” is assumed. 6.25.2 Options Arguments:

• a All information

• m Machine hardware name

• n Nodename of this computer

• p Processor type

• r Operating System Release

• s Name of the Operating System

• v Operating System Version

The output fields are in the same order as that for SVR4 UUCP, and each field has no blanks. 6.25.3 Examples uname -a AmigaOS xecho 3.1 40.70 Amiga/AGA m68040 Where ”AmigaOS” is for -s, ”xecho” is for -n, ”3.1” is for -r, ”40.70” is for -v, ”Amiga/AGA” is for -m, and ”m68040” is for -p.

6.26 UnShar

Usage : UnShar sharfile

6.26.1 Explanation Shar is a UNIX utility to archive text files together into a single mailable result. AmigaUUCP does not come with a shar, but it does come with an UnShar program which is able to unbatch most Shar’d mail messages.

6.27 UUArchive

Usage : UUArchive infile outfile

6.27.1 Explanation

UUArchive is used to archive personal mail that you send out. To use the program set your archive variable in dmail to archive mail you send to a scratch file.

I normally modify the ’q’ alias in dmail to automatically run ’UUArchive scratch file uu:mail/mbox’ on exit.

UUArchive appends <infile> to the end of <outfile>, then deletes <infile>. Additionally, it REMOVES any uuencoded files as it is appending <infile>.

6.28 UUCiCo

Usage : UUCICO -A -D[EVICE] device -U[NIT] unit -Getty -w -r1 -xn -Xn -xx -h0 -o -[s/S]system -e -s -7 -p # -pri -d0 -t<timeout> -T<timeout> -packets -nodelay -Q

6.28.1 Explanation

UUCiCo is the basis for UUCP. It can be run either from by Getty when something logs into the Amiga, it can be run from a Cron, or manually to originate connections.

Some options to UUCICO are now outdated and should not be used. Specifically, early versions of AmigaUUCP did not have a GETTY, and UUCiCo dealt with waiting for connections itself.

Either way, the final result is a connection between your machine and a remote machine. UUCiCo will retrieve queued work on the remote machine and send any queued work from your machine. These work files are located in UUSpool:.

The term ’work’ refers to items queued by other programs, such as PostNews and SendMail. These programs create files in UUSpool: that inform UUCiCo what to do with them and where to send them. When receiving work, UUCiCo will write it to UUSpool:, and then run UUXQT.

If the configuration (or environment) variable UseSubDirs is set to Yes, and the directory named UUSpool:¡system¿ has been created by the user, then UU-CiCo will check for work, and create incoming files, in that individual subdirectory for each system.

UUXQT scans received files and determines how to break them up (for example, append them to the appropriate mail box or news directory). The control files in UUSpool: contain a line indicating the appropriate program required to unpack the files. UUXQT reads this line and runs the proper program (RMAIL, RNEWS, etc.).

6.28.2 Locking

UUCiCo locks the serial port in the same manner Getty does, by doing the equivalent of the UUCP:C/LockSerial command before opening it. Thus, UU-CiCo’s will never bump into each other on the port. Any terminal program you run should lock the serial port as well. This is done by running the terminal program via UUCP:C/LOCKSERIAL with the appropriate arguments.

Refer to the explanation for Getty and LockSerial for more information. Note that recent versions of Terminus and VLT do have direct OwnDevUnit

support (which is how LOCKSERIAL locks the serial port).

6.28.3 Options

(*)’d Options are supplied automatically on Getty Initiated connections

• -7 Set 7WIRE mode for serial connections (i.e., hardware handshaking).

• -A Attempt to lock device. If it can’t be locked, then give up and exit.

• -b Run the BatchNews program before anything else.

• -d0 Ignore DTR switch forces UUCico to use the +++ sequence to disconnect instead of dropping DTR. This is a workaround for a possible bug in the serial device for those who experience crashes when UUCico tries to disconnect.

• (*)-D <devicename> Default is serial.device

• (*)-U <unitnumber> Default is 0

• -h0 Ignore Carrier Detect.

• -H Ignore Carrier Detect, and this is a hardwired connect so don’t send and dial or connect messages to the remote.

• -nodelay Normally, UUCICO will wait 0.06 seconds after receiving a ”no data” indication from the serial port to allow more data time to arrive. This flag prevents UUCICO from waiting, which may be needed with very high-speed interfaces (ISDN, etc.).

• -n <size> Set ’g’ and ’G’ protocol window size. If size is not specified, a window size of 1 is forced. The default (-n option not specified) is a window size of 7.

Sometimes it is necessary to reduce the window size to 3 or 4 when connecting to heavily loaded UNIX systems.

• -N <nodename> An override name to use as NODENAME (ignore what is in UULib:Config).

• -p # So-called ”protocol hacks”. A bit-field to control special protocol changes. The only one currently implemented is ”1”. When p1 is specified, on incoming connects, an ”=” is placed in the outgoing SHERE message.

• -p <letter> What protocol to use. Currently, only ’g’ and ’G’ are valid.

• -packets Calculate the most efficient packet size to be used for an outgoing transmission within the current segment size. Many unix systems will not support this properly. Taylor UUCP and HDB UUCP seem to. Use with care.

• -pri UUCico ups its priority by 1 during transfer, then downs it by 1 to run uuxqt. (i.e. +1 during transer, -1 for uuxqt).

• -P <segsize> Set segment size, in powers of two where a segment size of 2 == 64 bytes. The maximum segment size is 8 (4096 bytes). The complete table is as follows:

Segment Size Bytes 2 64 3 128 4 256 5 512 6 1024 7 2048 8 4096

This option should be used only by experienced UUCP users. Larger is not necessarily better since all packets are fixed length (unless -packets is set).

• -Q When UUXqtInterval is set, and -Q is set, then UUXQT is passed the name of the current host to allow it to unbatch only for that host. Current versions of UUXQT support this. Versions from 1.16 and before do not.

• -t <timeout> Set GIO protocol packet timeout before retry. Default is 5. In many cases this can cause long no-activity delays due to small glitches when, in fact, the receiving host is not loaded down. Setting the timeout to 1 generally fixes this.

• -T <timeout> Set timeout for send-expect strings, default is 15 seconds.

• -Xn Set log and debug level but do not tell the remote system about it.

• -Xx Set log and debug levels, as well as debug handshake to stdout, but do not tell the remote system about it.

• -xn Set log and debug level for us and for the remote system

• -xx Debug handshake to stdout (but not once connection is established). Useful for debugging L.Sys send-expect stuff.

Getty initiated options:

• (*) -Getty Tells UUCICO that it was started from a Getty.

Manual poll options:

• -o Tells UUCICO to not search for a CONNECT message when carrier is detected (hardwired configuration) and doesn’t dial any numbers. (See also H.)

• -r1 Call all systems we have pending work for. When not zero, UUCICO starts connection as master. Otherwise, as slave.

• -r1 -ssystem Call this specific system if we have pending work.

• -s system Poll (call-up) the specified system

• -S system Same as -s but ignore time restrictions Obsolete options (wait mode options) do not use if you can help it:

• -e Tells UUCICO to loop forever waiting for connections.

• -B <baudrate> Ignored.

• -w Tells UUCICO to wait for one or more connections (depending on -e) AFTER having previously polled one or more systems (-r, -s, -S).

• <nooptions> If UUCICO is run without either -Getty, -s, or -r, it will wait for a single connection. This is used for incoming connections.

6.28.4 Configuration options Uucico understands the following special options, in either of uulib:Config, or as environment variables (for 2.0 or above):

• Batchnews string The name of the BATCHNEWS program for the -b switch.

• Copynotify integer/bitfield Enable various notifications via mail:

– 1 - notify of send failure that will not be retried (denied)

– 2 - notify of send failures that WILL be retried (protocol errors)

– 4 - notify of successfull outgoing file copy (UUCP only)

– 8 - notify of incoming file (UUCP only)

– 16 - notify of incoming failure of anykind Add together for various options, 31 for all. Mail is sent to USERNAME entry for incoming files and to the originator of outgoing file copies.

• Ctimeout integer How many seconds to wait for the CONNECT message after dialing a number

• Modeminit string A string to be sent to the modem immediately before dialin a number.

• Sendmail string The name of the mailer program for sending mail (for Copynotify).

• Usesubdirs yes/no/1/0 Whether subdirectories of UUSpool: should be used for sending and receiving work. This is also used by UUX, UUCP, and other programs.

• Uuxqt string The name of the UUXQT program for UUXqtInterval.

• Uuxqtinterval integer How many files to receive before starting a UUXQT. If zero, UUCICO does not start UUXQT at all (defaults to zero).

• Uuxqtpriority integer The priority at which to start UUXQT.

6.28.5 Timelog format UUCICO automatically appends an entry to UUSPOOL:TimeLog in the following format: dd-mmm-yy mm:ss mm:ss in=nnnnn out=nnnnn <system\ name>

The date, then two on-line times. The first is the connect time from carrier detect, the second is connect time from send-expect success. Use whichever one is appropriate for bill calculations. Following that is the number of data bytes received (total of received file sizes) and the number of data bytes sent (total of transmitted file sizes). These numbers do not reflect additional overhead used by the G protocol (messages, acks, packet overhead, or retries).

UUCICO also automatically appends an entry to UUSPool:XferStat in the standard XferStat format for each connect.

Example:

; Place a line similar to this in your startup-sequence! ; See GETTY manual

resident uucp:C/Getty run <nil: >nil: Getty -A -B19200 -Mm —– ; Manually poll system ’foo’ UUCICO -sfoo —– ; From DCRON (DCRON ENTRY) 40 1 * * * uucp:c/uucico -r1

6.29 XUUCPToss

Usage: XUUCPToss <section|ALL>

6.29.1 Explanation

You can run XUUCPToss for just one section or for all sections involved with XenolinkUUCP. XUUCPToss will scan every message area that has a tagname similar as the ones you have defined in the XenolinkUUCP/areas.config, it also scans all sections which are defined as netmail section; of course this is only done when you run XUUCPToss in *all* mode. When you run XUUCPToss for only one section the section will only be scanned when the tagname is in the XenolinkUUCP/areas.config or when it’s a netmail section; local areas can not be used for XenolinkUUCP!

You can send email directly from a echomail section by putting a to: line on the first line of the message, this message will be converted to email and not to a newsarticle.

7 Running XenolinkUUCP

7.1 Explanation

XenolinkUUCP is controlled by several configuration files which have have been described above. Make sure you have them set all with the right parameters to get a correct working XenolinkUUCP package. To get mail from your uplink you normally should use UUCiCo, read the chapter about UUCiCo to understand the working and usage of it. To unpack mail and news you should use UUXQt, which runs the appropriate executables, which normally are RNews and RMail, which can also call other executables, it’s to difficult to explain this all to you, you won’t have to know either to get this package to work. To gate echomail and netmail to news and mail you will have to use XUUCPToss, read also the chapter about XUUCPToss to understand the usage and working.

7.2 Configuration files for XenolinkUUCP

XenolinkUUCP has several configuration files for defining the various options:

• areas.config

• general.config

• users.config

All these configuration files are described in the sections below.

7.2.1 Areas.config

The areas.config defines the areas (echomail/news) which you want to be affected for gating from and/or to usenet. There are several ways to set up an area for gating:

• gating from news to echomail and vice versa

• gating from news to echomail only

• gating echomail to email

• gating email to echomail

The template for the line in the areas.config which defines how an area has to be gated is as follows:

GATE <tagname> <newsgroup> <direction> <to> <from>

The last two fields are optional and don’t have to be defined always, opposite of the first three fields.

• tagname this is the tagname of the echomail area you want to gate news to/from

• newsgroup this is the name of the newsgroup you want to gate to/from

• direction there are three directions possible:

– FIDO this will gate only news to echomail (not yet supported)

– UUCP this will gate only echomail to newsgroups (not yet supported)

– BOTH this will gate messages in both directions

At this moment only the BOTH direction is supported, in the next version you will be able to choose which direction you want to gate news/echomail to

• to If you want to gate echomail to a usenet (email) address, you can put here the address it should be send to; this can be an alias also.

• from If you want mailinglists to be gated to and from an echomail area this is the address the message should be send from.

These are the examples for the different ways of gating:

• GATE C.S.A.DATACOMM comp.sys.amiga.datacomm BOTH

this will gate the ”normal” newsgroups

• GATE C.S.A.DATACOMM comp.sys.amiga.datacomm test@xecho.xs4all.nl

this will news to the echomail area just like the normal gating does, but it’ll gate echomail to the e-mail address in stead of to the newsgroup. Although the <newsgroup> is not used here, you still have to put an entry there (due to the use of ReadArgs()).

• GATE C.DATACOMM comp.datacomm listserv@xecho.xs4all.nl test@xecho.xs4all.nl

this will gate messages from listserv@xecho.xs4all.nl to the echomailarea with the tagname C.DATACOMM, and it gates messages in C.DATACOMM to listserv@xecho.xs4all.nl with as From: address ’test@xecho.xs4all’. Be sure that the latter address is the address you subscribed to the mailinglist.

7.2.2 General.config At this moment there are 11 keywords allowed in the general.config, which are:

• FidoAddress <address> this is the address which should be used to send messages to when gating from usenet to fidonet, for example: FidoAddress 2:285/312.0

• GateAddress <address> this is the address which should be used to send messages from when gating from usenet to fidonet, for example: GateAddress 2:285/312.1

• Port <”string”> This puts each line in the header (email/news), which matches the ”string”, unchanged into the fidonet message. You can put as many Port lines as you like in this config. Note: the ”string” must be within quotes, otherwise only the first word is taken as string. Example: Port ”From:” This will affect *all* lines in the header that begin with ”From:”.

• Strip <”string”> This strips each line from the header (email/news), this means that this line will not be put into the fidonet message. You can put as many Strip lines as you like in this config. Note: the ”string” must be within quotes, otherwise only the first word is taken as string. Example:

Strip ”To:”

This will affect *all* lines in the header that begin with ”To:”.

• Kludge <”string”>

This puts each line in the header (email/news), which matches the ”string”, unchanged into the fidonet message, but adds a CTRL-A in front of it. Because of this the line will not be shown in the message when you read it, unless you have choosen to display those kludged lines also. You can put as many Kludge lines as you like in this config.

Note: the ”string” must be within quotes, otherwise only the first word is taken as string.

Example:

Port ”Subject:”

This will affect *all* lines in the header that begin with ”Subject:”.

• Default <Port|Strip|Kludge> Here you can put the default value for header lines that don’t match one of the above lines. Example:

Default Kludge

This will affect *all* lines in the header that does not begin with a string that matches the strings put in the config for Kludge, Strip or Port.

• EmailSection <sectionnumber> Here you must put the number of the netmail section where you want to store gated emails.

• NetmailUsePkt <Yes|No> This defines whether you gate emails to a pkt file or in the netmailsection defined by EmailSection.

• NewsUsePkt <Yes|No> This defines whether you gate news articles to a pkt file or in a messagebase with the defined tagname (in areas.config).

• StoreUUCPMsg <Yes|No> This defines whether or not you want to store the original news articles in UUNews:.

• AppendGeneralSign <Yes|No> This defines whether or not you want to append the general sign (in XConfig:XenolinkUUCP/signatures/all) to everuy newsarticle or email written by a user which has *no* own signature defined in the directory XConfig:XenolinkUUCP/signatures/.

7.3 Gating from News to Echomail and vice versa

When you want a newsgroup to be gated from and to an echomail area you only have to define in your areas.config and of course in Xenolink’s configuration files.

7.4 Gating Mail and News to Netmail and Echomail

In order to gate incoming mail and news to netmail and echomail, the only thing you’ll have to do is run ”UUXQT”. You can also have this run by UUCiCo automatically. UUXQT calls the appropriate executables which are RNews and RMail, these two will call other executables as well, but you don’t have to bother about that if you have installed the complete XenolinkUUCP package.

7.5 Gating Netmail and Echomail to E-Mail and News

When you want to gate echomail and netmail to news and e-mail you’ll only have to run XUUCPToss. See the section ”XUUCPToss” for the usage of the program.

7.6 Signatures

You can define a signature for every user defined in the users.config. This is done by putting a file in XConfig:XenolinkUUCP/signatures/ with the username as filename. For example my signature file has the name bart, because my username for UUCP is bart; the complete path and filename will be: XConfig:XenolinkUUCP/signatures/bart. When there is no signature file defined for the user that is sending the message you can define a signature file for all of those with a filename of XConfig:XenolinkUUCP/signatures/all. You switch this option with the keyword AppendGeneralSign <Yes|No>.

8 Environment variables

All new configuration variables are explained in the man pages of the programs they affect.

ENVIRONMENT VARIABLES: (ENV: or 2.0+ local environment variables) USERNAME overides Config UserName entry. REALNAME overides Config RealName entry. ** NOTE ** That under 2.0 and above local environment variables may be

used to override ANY configuration parameter.

9 Literature

• Amiga ROM Kernel Reference Manual 3rd edition, Includes and Autodocs • Amiga ROM Kernel Reference Manual 3rd edition, Libraries

• Amiga ROM Kernel Reference Manual 3rd edition, Devices

• Amiga User Interface Style guide

• The AmigaDOS Manual 3rd edition

• SAS/C Development System Library Reference (6.50)

• The C programming language, second edition (Kernigan & Ritchie)

• RFC 882, RFC 920, RFC 976, RFC1036 and RFC 1137

10 Acknowledgements

I want to thank everyone who made suggestions, sent bugreports, or has done whatever to get XenolinkUUCP as it is now. The following people I want to thank especially:

• Michael B. Smith, for maintaining the sources of AmigaUUCP

• Commodore Amiga , for creating a great computer (Amiga 4000/040)

• Jonathan Forbes, for creating the best BBS program ever

• SAS Institute, for creating a great development system (SAS/C 6.51)

• ASDG Inc., for creating a great editor (Cygnus Editor Professional 3.5)

• Inovatronics Inc., for creating an even greater editor (The Edge 1.704)

• my betatester Jorn Bang-Andersen for ideas and bug reports etc.

• Martin Wasley for ideas, support and usenet support in XExtEd.

11 Bugreports

Bug reports suggetions and other remarks can be posted in

XENOLINK UTIL, netmailed (direct) to 2:285/312 ”Bart Schraa”, or emailed to bart@xecho.xs4all.nl. The more details I get the more likely I am to solve your problem or find the bug.